IT评测·应用市场-qidao123.com

标题: 读《mysql是怎样运行的》有感 [打印本页]

作者: 耶耶耶耶耶    时间: 2023-4-23 21:52
标题: 读《mysql是怎样运行的》有感
最近读了一本书《mysql是怎样运行的》,读完后在大体上对mysql的运行有一定的了解。在以前,我对mysql有以下的为什么:
现在我对这些为什么都有了答案,下面说说我看书后的个人理解。
以下都是以InnoDB而言。
问题:InnoDB中的表空间、段、区和页是什么?
什么是页?为什么要有页?
什么是表空间?为什么要有表空间?
什么是区?为什么要有区?
什么是段?为什么要有段?
有了段之后带来的问题: 一个表默认都会有聚集索引,那么也就是默认有两个段,而一个段是以区为单位去分配内存的,一个区默认占1M存储空间,那么一个普通的小表也需要用到2M的存储空间?
分析: 问题的原因在于段是只有一个结点类型的区,一个段内的页只存储同种类型的数据,即使有空闲页,那么不会另为他用。
解决: 使用碎片区。
有了碎片区以后,段不能仅定义为是某些区的集合,更精确的应该是某些家散的页面以及一些完整的区的集合。
总结;
表空间、段、区、页与B+树的联系:
问题:redo log为什么就能实现事务的持久性?
什么是Buffer pool?
为什么要有redo log文件?
什么是redo log buffer?为什么要有redo log buffer?
问题:到底什么是意向锁?意向锁有什么用?
什么是X锁、S锁?
什么是意向锁?为什么要有意向锁?
总结:
如果表中存在意向锁(IX或IS型),那么也意味着有事务在对行进行加锁,此时如果另一个事务要加表级锁,就要判断表级锁和任意一个意向锁是否互斥。
问题:mysql中的外连接、内连接到底是什么?
什么是连接?
什么是驱动表?什么是被驱动表?
<blockquote>整个连接的过程就类似一个双层for循环,外层的for就是驱动表,内层的for就是被驱动表。
[code]for(int i='a';i




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4