MySQL内核InnoDB存储引擎(卷1)笔记,mysqlinnodb
MySQL内核InnoDB存储引擎(卷1)
目录
- 1
概览
- 2
基本数据结构和算法
- 3
同步机制
- 4
重做日志
- 5
mini-transaction(mtr)
- 6
存储管理
- 7
记录
- 8
索引页
- 9
锁
- 10
B+树索引
- 11
Insert Buffer
- 12
缓冲池
- 13
事务处理
- 14
数据字典
- 15
服务管理
概览
基本数据结构和算法
同步机制
p38 若sync_primary_wait_array中1000个cell都已分配,则ut_error触发crash
重做日志
LSN(表示事务写入redo log的字节量?)
检查点:将缓冲池中的页刷新到磁盘
redo日志的大小是固定的(3GB)->归档日志ib_logfile<N>redo日志块(512B-12-8)
重做日志组*组提交:fsync -> log_flush_up_to 会对最后一个日志块进行复制恢复:recovery_from_checkpoint_start
mini-transaction(mtr)
Force-Log-at-Commitmtr_t mtr; mtr_start(&mtr); ... mtr_commit(&mtr);
更新多行记录时,MLOG_MULTI_REC_END
存储管理
段(segment)
表空间数据结构:fil_system/space/node_struct4个异步I/O线程:异步读、异步写、插入缓存、重做日志
记录
p103 VARCHAR类型的NULL不占用磁盘空间,而CHAR NULL用0x00填充大记录:BLOB/TEXT(溢出页,extern属性)
逻辑记录
行记录版本(MVCC只是列?):通过隐藏的事务ID列
p114 函数read_view_sees_trx_id用来判断当前事务是否可以读记录的当前版本,不是,则row_sel_build_prev_vers_for_mysql
索引页
Page Directory(定位记录在页内的位置)
Page Cursor*
锁
lock_rec_struct = { space, page_no, n_bits }
p144 LOCK_GAP(代表范围锁不包含端点)显式锁和隐式锁**(略)行锁的维护*(重点,略)
自增锁(atomic?)死锁*
B+树索引
DML操作
主键更新
持久游标 btr_pcur_struct自适应哈希索引*
Insert Buffer
缓冲池
线性预读*逻辑预读
页的刷新
事务处理
undo日志实现:回滚段 + undo段
undo记录purge*rollback
commit
数据字典
服务管理
使用
mysql> show engines;
指令 看看有没InnoDB
如果没有 介意重装
这个是考虑性能的问题,还有事务的支持,吧 百度一下你就知道
MyISAM、InnoDB、Heap(Memory)、NDB
貌似一般都是使用 InnoDB的,
mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
最常使用的2种存储引擎:
1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
不知道是不是对你有帮助
http://www.htsjk.com/shujukunews/4386.html
www.htsjk.Com
true
http://www.htsjk.com/shujukunews/4386.html
NewsArticle
MySQL内核InnoDB存储引擎(卷1)笔记,mysqlinnodb MySQL内核InnoDB存储引擎(卷1) 目录 1 概览 2 基本数据结构和算法 3 同步机制 4 重做日志 5 mini-transaction(mtr) 6 存储管理 7 记录 8 索引页...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。