MYSQL
zwleagle
这个作者很懒,什么都没留下…
展开
-
MYSQL配置文件解析
1. 收集默认的目录: 接口 init_default_directories();主要是下面的目录:"/etc/""/etc/mysql/"环境变量中设置的: MYSQL_HOME当前用户的home目录 : "~/"2. 如果命令行参数中有"--no-defaults"选项, 则将"--no-defaults"选项直接从现有的命令行参数中去掉, 然后直接返回,即不原创 2013-07-12 15:22:47 · 1411 阅读 · 0 评论 -
InnoDB 锁数管理据结构
对于表锁, InnoDB一般只是获取意向锁(意向共享锁LOCK_IS和意向排它锁LOCK_IX),一般不会去获取共享锁(LOCK_S)和排它锁(LOCK_X)。除非明确的执行LOCK TABLE 命令。一个例外是在在线ALTER TABLE命令的准备阶段,一个表将会被共享锁(LOCK_S) 锁住。Lock bitmap用于表示行锁,紧邻lock struct存放,每bit代表页内1行数据,使用he原创 2015-03-23 18:53:40 · 684 阅读 · 0 评论 -
InnoDB Purge 过程
Purge流程Purge功能:InnoDB由于要支持多版本协议, 因此无论是更新, 删除, 都只是设置记录上的deleted bit标记位, 而不是真正的删除记录. 后续这些记录的真正删除, 是通过Purge后台进程(根据参数srv_n_purge_threads配置, 由下面两个线程中的一个来执行purge: srv_purge_thread(); srv_master_thre原创 2015-03-23 18:41:28 · 3603 阅读 · 1 评论 -
InnoDB 事务管理页的结构, 包括rollback segment和undo log页
1. 每个事务开始时,都会分配一个ROLLBACK SEG给这个事务(即trx_sys_struct->rseg_array[]数组中的一个元素, 这个数组中的元素由链表[trx_sys->rseg_list]来管理,在链表中选择segment是采用ROUND-ROBIN的方式来。即trx_sys_struct->latest_rseg来指示最新被使用的rollback segment)原创 2014-09-02 19:28:11 · 2631 阅读 · 0 评论 -
InnoDB 页管理结构
1.段段是表空间文件中的主要组织结构,它是物理上的管理物理空间的一个逻辑概念,它是构成索引,表,回滚段的基本元素,创建一个索引(B树)时会同时创建两个段,分别是内节点段和叶子段,内节点段用来管理(存储)B树中非叶子节点(页面)的数据,叶子段用来管理(存储)B树中叶子节点的数据. 一个段由一个INODE节点来管理这个段下面的所有的簇(extend).2.簇原创 2014-09-02 19:21:16 · 1411 阅读 · 0 评论 -
InnoDB 死锁检测实现
InnoDB的死锁检测是通过等待图(Wait-For-Graph)的算法实现的,即检查所有在一个锁上等待的事务是否已经成环;如果成环了说明已经出现死锁,根据一定的策略将某个事务回退将环切断而解除死锁。 死锁的检测时机是在将事务加入等待队列是检测的(lock_table_enqueue_waiting(表), lock_rec_enqueue_waiting(记录) );死锁原创 2015-03-23 18:46:42 · 2243 阅读 · 0 评论 -
InnoDB MVCC
MVCC: multiversion concurrency control, 多版本并发控制,它提供基于某个时间的快照,使得对于事务看来,总是可以提供与事务开始时刻相一致的数据。而不管这个事务执行的时间有多长,故在不同事务看来,同一时刻看到的相同的行数据可能是不一样的,即:每一行数据会有多个版本数据(副本)。InnoDB的实现:InnoDB的MVCC主要是根据u原创 2014-09-02 19:08:00 · 743 阅读 · 0 评论 -
InnoDB Adaptive Hash Index(AHI)
1. InnoDB AHI的作用 InnoDB的适应哈希(AHI)是维护InnoDB叶子页记录的索引键值(或键值前缀)的到叶子节点记录的Hash映射关系。能够根据索引键值(或前缀)定位到记录的地址。这样可以不用再搜索B+树从root到叶子页的路径定位过程。2. InnoDB AHI的维护 为了避免频繁的更新AHI带来性能的开销,InnoDB的AHI不是随时原创 2014-09-02 19:22:40 · 1614 阅读 · 0 评论 -
InnoDB INDEX页物理结构
原创 2014-09-02 19:03:04 · 642 阅读 · 0 评论 -
InnoDB行记录格式(compact)
1. 变长字段长度列表 记录非NULL变长字段的长度列表; 并且安装列的循序的逆序进行放置,一列的长度如果小于255,用一字节表示,如果长度长度大于255,则用两字节表示,一字节还是两字节只对一列来讲,如果一行中既有大于255,也有小于255的,则大于255用两字节,小于255则用一字节。从分析文件的十六进制来看,如果大于255,则高字节的最高位是1. 还需要分析代码是否高位都是原创 2014-09-02 18:54:48 · 2452 阅读 · 0 评论 -
InnoDB double write
InnoDB的double write的作用主要是为了防止部分写失效,即InnoDB默认的页是16k,而磁盘管理的页(即一次写磁盘的大小)一般不是16k,因此InnoDB一次写一个16k页时,操作系统和磁盘要多次写入,这样如果出现异常(断点或OS异常),会导致16k页只能部分写入。因为我们知道在flush buffer cache的时候,其实redo log已经写好了. 为什么还需要担心par原创 2014-09-02 19:22:49 · 815 阅读 · 0 评论 -
MyISAM索引文件头部结构(5.1.40)
MyISAM索引文件的头部结构 域长度(byte) MI_STATE_INFOheader24open_count2changed1sortkey1state.records8state.del8state.del8delli原创 2013-07-12 15:27:49 · 806 阅读 · 0 评论 -
InnoDB INODE 页结构
1. Inode是用来管理一个段的,简单说,一个Inode就是代表一个数据段.Inode可以说是一个结构体,它也是像上面一样,按顺序存储到Inode页面中,一个Inode页面可以存储多个Inode节点.如果页面中所有的空间都用来存放已经使用的Inode,则这个页面就称为满Inode页面,否则为半满Inode页面.2. 当表空间的FSP_SEG_INODES_FREE中没有空闲的IN原创 2015-03-23 19:22:28 · 2140 阅读 · 0 评论