查阅资料时了解到的信息 整理一下,方便以后查看一、索引介绍 索引是数据库中非常非常重要的概念,它是存储引擎能够快速定位记录的秘密武器,对于提升数据库的性能、减轻数据库服务器的负担有着非常重要的作用;索引优化是对查询性能优化的最有效手段,它能够轻松地将查询的性能提高几个数量级。2. 数据结构 B+tree nnoDB 存储引擎在绝大多数情况下使用 B+ 树建立索引,这是关系型数据库中查找最为常用和有            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-13 02:09:21
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # MySQL InnoDB源码分析
## 1. 简介
MySQL是一个广泛使用的开源关系型数据库管理系统,其内部的存储引擎之一是InnoDB,它是一个高性能的事务安全存储引擎。本文将教会你如何进行InnoDB源码分析。
## 2. 流程
以下是进行InnoDB源码分析的整体流程:
```mermaid
flowchart TD
    A(开始)
    B(下载源码)
    C(配            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-11-26 11:39:10
                            
                                81阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感.    1. InnoDB的体系架构由一系列后台线程,内存池和文件组成,这点与其他DB有相似之处. 在内存中划分了一块区域,即缓冲池,用来临时存放用户读写的数据            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-14 12:19:52
                            
                                26阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             我们知道 mysql innodb 在插入更新数据时是锁行的,但这里所指的行并不是直面上说的单行,而是相对的范围的行!
引起我关注这个问题的是在做天气预报查询15天(http://tqybw.net)这个项目时发现的!其中有一张表开始用的是MyISAM类型的,由于更新很频繁,经常会造成表锁,改成innodb后,虽然表锁的机率小了很多,但还是会发生!
 
以下是分析测试:            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2012-10-16 13:08:52
                            
                                574阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            写的很不错,收藏并分享之 http://hi.baidu.com/baiduqa/blog/item/c53b8c95663afd7855fb9697.html             
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-05-11 10:27:40
                            
                                2153阅读
                            
                                                        
                                点赞
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
            背景MySQL默认的存储引擎是InnoDB,而引入Secondary Engine,用来实现同时支持多引擎,在同一个MySQL Server上挂多个存储引擎,在支持InnoDB的同时,还可以把数据存放在其他的存储引擎上。 全量的数据都存储在Primary Engine上,某些指定数据在Secondary Engine 上也存放了一份,然后在访问这些数据的时候,会根据系统参数和cost选择存储引擎,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-04 17:34:30
                            
                                332阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            mysql、innodb和加锁分析 原文:https://liuzhengyang.github.io/2016/09/25/mysqlinnodb/ 介绍 本文主要介绍MySQL和InnoDB存储引擎的一些知识。分为MySQL基础知识、InnoDB介绍和加锁分析。 MySQL基础知识 MySQL架            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-10-18 14:55:00
                            
                                117阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            概述很多朋友可能会有许多关于Innodb如何使用内存的问题。我这里将简单介绍一下innodb内存结构,然后以innodb启动时的分配情况做一个解释。       1、INNODB内存结构       1.1、聚集索引与非聚集索引:聚集索引:主键,有序,存储顺序与内存一致非聚集索引:非主键,无序聚集索引在叶子节点存储的是表中的数据非聚集索引在叶子节点存储的是主键和索引列使用非聚集索引查询出数据时,拿            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-20 12:24:07
                            
                                51阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 以下选项会被MySQL客户端应用读取。
# 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。
# 如果你想你自己的MySQL应用程序获取这些值。
# 需要在MySQL客户端库初始化的时候指定这些选项。
#[client]#password= [your_password]port= @MYSQL_TCP_PORT@
socket= @MYSQL_UNIX_ADDR@
#*** 应用            
                
         
            
            
            
            Log & Checkpoint   Innodb的事务日志是指Redo log,简称Log,保存在日志文件ib_logfile*里面。Innodb还有另外一个日志Undo log,但Undo log是存放在共享表空间里面的(ibdata*文件)。    由于Log和Checkpoint紧密相关,因此将这两部分合在一起分析。    名词解释:LSN,日志序列号,Innodb的日志序列号是一            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-04-09 11:16:45
                            
                                445阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文件storage/innodb_plugin/srv/srv0srv.csrv_print_master_thread_info(file)sync_print(file);lock_print_info_summary(file);	if (trx_start) {		long	t = ftell(file);		if (t < 0) {			*trx_start = ULINT_UND            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-06-06 17:30:39
                            
                                914阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            几天群里面说了ENUM这个类型,顺便看看这个类型的数据在数据库里面是不是按照int类型存放的。相关资料可以看看《mysql技术内幕innodb存储引擎》第一版或者第二版第二版103页compact记录格式。下面是我的测试。表结构:mysql> desc enum_t;+-------+---------------------------+------+-----+---------+---            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2013-07-10 20:54:35
                            
                                1121阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            案例描述      在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志。两个sql语句如下:      (1)insert into backup_table select * from source_table      (2)DELETE FROM source_table WHERE Id>5 AND            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-07-30 14:22:45
                            
                                208阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            现象: 导入一个insert 语句sql文件到数据库中时,老是报错:“Error Code: 1205 - Lock wait timeout exceeded; try restarting transaction”。 我们使用 innodb_trx innodb_lock_waits innod ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-09-12 16:31:00
                            
                                1993阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            InnoDB存储引擎文件MySQL数据库包括数据库本身的文件和存储引擎文件。数据库自身的文件由参数文件(my.cnf)、错误日志文件、慢查询日志文件、查询日志文件、二进制日志文件、套接字文件、pid文件、表结构定义文件(tabname.frm)和InnoDB存储引擎相关的文件有表空间文件和重做日志文件。一、表空间文件InnoDB引擎将存储的数据按照表空间进行存放的设计。在默认配置下有一个初始大小1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-13 17:02:40
                            
                                233阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            从MySQL 5.5版本开始默认使用InnoDB作为引擎,它擅长处理事务,具有自动崩溃恢复的特性,在日常开发中使用非常广泛。下面是官方的InnoDB引擎架构图,主要分为内存结构和磁盘结构两大部分。一、InnoDB内存结构内存结构主要包括Buffer Pool、Change Buffer、Adaptive Hash Index和Log Buffer四大组件。1. Buffer Pool:缓冲池,简称            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-13 02:14:35
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             InnoDB体系架构  这些内存块负责如下工作:维护所有进程/线程需要访问的多个内存数据结构缓存磁盘上的数据,方便快速读取,同时在对磁盘文件的数据修改之前在这里缓存。重做日志缓冲(redo log)后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外将修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-06 11:32:03
                            
                                38阅读
                            
                                                                             
                 
                
                                
                    