![](https://img-blog.csdnimg.cn/direct/76824b5ee72443339cd6cb5a69769fdf.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 61
MySQL学习笔记
温酒煮青梅
初级打工人
展开
-
《MySQL是怎样运行的》【第19章 redo日志】笔记--【redo日志特性、分类、写入、刷盘时间、日志文件组】【Mini-Transaction(MTR)】
第19章 redo日志前导知识增删改查的本质都是访问页面(读写、创建新页面等)如果仅仅修改某个页面的一个字节,也需要将一个完整的页面从内存刷到磁盘中,这种情况刷新一个完整的数据页太浪费了一个事务修改的多个页面可能并不相邻。导致随机I/O增多what没有必要在每次提交事务的时候就把该事务对应的修改页面全部刷新到磁盘,只要把修改记录下来就好依靠redo log,系统在崩溃重启后按照里面的内容重新更新数据页就能实现事务的持久性redo日志本质上是在记录事务对数据库进行了原创 2021-12-03 22:52:11 · 280 阅读 · 0 评论 -
《MySQL是怎样运行的》【第18章 事务】笔记
第18章 事务四大特性原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)what需要保证ACID特性的一个或多个数据库操作称为事务(transaction)事务的状态活动(active)部分提交(partially committed)失败(failed)中止(aborted)提交(committed)流程开启事务begin;start transaction;提交事务commit;不显原创 2021-12-01 23:10:09 · 302 阅读 · 0 评论 -
《MySQL是怎样运行的》【第16章 optimizer trace】【第17章 缓冲池(Buffer Pool)】笔记
第16章 + 第17章optimizer tracewhat可以让用户查看优化器为指定语句生成执行计划的过程步骤打开optimizer trace功能输入查询语句从OPTIMIZER_TRACE表中查看上一个查询的优化过程关闭optimizer trace功能缓冲池(Buffer Pool)前导知识InnoDB处理客户端的请求时,如果需要访问某个页的数据,会将完整的页中的数据全部加载到内存中将整个页加载到内存中就可以进行读写访问了,而且读写访问之后不着急释放该页对应的内存,原创 2021-11-30 22:27:45 · 868 阅读 · 0 评论 -
《MySQL是怎样运行的》【第14章 查询优化】笔记----【查询条件化简】【外连接消除】【子查询简介、分类、注意事项】【子查询优化】【子查询的执行方式】
第14章 查询优化前导知识what查询优化就是MySQl会将程序员编写的一些比较耗费性能的语句进行查询重写条件化简移除不必要的括号常量传递某个表达式是某个列和某个常量的等值匹配,会直接用常量替换列名移除没用的条件比如永远为true或false表达式计算表达式只包含常量的话,值会被计算出来如果某个列在函数中或者以运算形式出现,优化器不会进行化简having和where子句的合并查询语句中没有sum、max这样的聚集函数以及group子句的话,优化器会将havin原创 2021-11-26 22:29:23 · 637 阅读 · 1 评论 -
《MySQL是怎样运行的》【第13章 InnoDB怎样收集统计数据】笔记----【表/索引的统计数据】【InnoDB统计数据的存储】
第13章 InnoDB怎样收集统计数据前导知识表的统计数据show table status;索引的统计数据show index;统计数据的存储永久性存储存储于磁盘上,服务器重启后数据仍然存在实际存储在磁盘内的两个表中innodb_index_statsinnodb_table_stats非永久性存储存储于内存中,服务器重启时,重新收集统计数据...原创 2021-11-26 22:27:19 · 514 阅读 · 0 评论 -
《MySQL是怎样运行的》【第12章 成本优化】笔记----【单表查询的成本】【执行计划的确定】【连接查询的成本】
第12章 成本优化成本是what一条查询语句在MySQL中的执行成本由 I/O成本、CPU成本 组成I/O成本:InnoDB、MyISAM存储引擎将数据和索引存储在磁盘,当查询记录时,需要将数据记载到内存上。从磁盘加载到内存过程中损耗的时间就是I/O成本CPU成本:读取记录、检测记录是否符合搜索条件、对结果排序等操作耗费的时间单表查询的成本查询之前MySQL的优化器会找出所有可以用来执行该语句的方案,找到成本最低的方案作为执行计划执行计划的确定1、根据搜索条件,找到所原创 2021-11-24 21:08:22 · 522 阅读 · 0 评论 -
《MySQL是怎样运行的》【第11章 表连接的原理】笔记----【数据库表连接过程】【SQL内/外连接】【where和on的区别】【使用索引加快连接速度】【基于块的嵌套循环连接】
第11章 表连接的原理前导知识连接:将各个表中的记录都取出来进行依次匹配,将匹配后的结果发给客户端笛卡尔积:连接查询的结果中包含一个表的每一条记录与另一个表中每一条记录的组合,这样的查询结果就是笛卡尔积比如表a有5条记录;表b有6条记录;a和b的笛卡尔积就是30连接过程1、确定第一个需要查询的表,此表为驱动表2、从驱动表中取每一条符合搜索条件的记录,到接下来的表中查找匹配的记录;驱动表之后的那个表就叫被驱动表只需要访问驱动表一次,可能会多次访问被驱动表每获得一条满足条件的驱动表记录,马上原创 2021-11-23 22:11:34 · 402 阅读 · 0 评论 -
《MySQL是怎样运行的》【第10章 单表访问方法】笔记
第10章 单表访问方法前导知识单表查询:from子句后只有一个表访问方法:MySQL执行查询语句的方式访问方法的分类constwhat:通过主键或位移耳机索引列来定位一条记录约束:只能在主键列或唯一二级索引列与一个常数进行等值比较时才有效,必须要保证最多只有一条记录符合搜索条件refwhat:通过二级索引列与常数进行等值比较,形成的扫描区间为单点对于普通的二级索引列,使用ref可能获取到多条连续的二级索引记录每获取到一条二级索引记录,会立刻进行回表ref_or_null原创 2021-11-21 22:11:16 · 511 阅读 · 0 评论 -
《MySQL是怎样运行的》【第9章 InnoDB的表空间】笔记
第9章 InnoDB的表空间上一张思维导图前导知识系统表空间:对应一个文件系统中一个或多个实际文件独立表空间:对应文件系统中名为“表名.ibd”的文件一个表空间最多可以拥有2^32个页独立表空间区(extent)对16KB的页来说,物理位置上连续的64个页组成一个区,即区的大小默认1MB当表的数据量很大时,为某个索引分配空间不以页为单位,而是以区为单位区的分类FREE:空闲的区FREE_FRAG:有剩余空闲页面的碎片区FULL_FRAG:没有剩余空闲页面的碎片区F原创 2021-11-19 19:55:14 · 1090 阅读 · 0 评论 -
《MySQL是怎样运行的》【第8章 MySQL的数据目录】读书笔记
第8章 MySQL的数据目录上一张思维导图前导知识1、存储引擎InnoDB、MyISAM将数据存储在磁盘2、操作系统通过文件系统管理磁盘因此,存储引擎是将数据存储在文件系统上MySQL目录安装目录:存储控制客户端和服务端的程序文件数据目录:服务器启动时在该目录下加载数据,之后在运行过程中将产生的数据存在该目录下的文件中数据目录对应系统变量datadirmysql查看数据目录:show variables like 'datadir;数据库在文件系统中的表示每个数据库对应数据原创 2021-11-18 21:45:40 · 612 阅读 · 0 评论 -
《MySQL是怎样运行的》【第5章 InnoDB数据页结构 】 【第6章 B+树索引】笔记
MySQL是怎样运行的上一个思维导图第5章 InnoDB数据页结构数据页结构快览页是什么:InnoDB管理存储空间的基本单位数据页是什么:索引页,就是存放记录的页页大小:16KB页类型:根据存储内容而定,如inode、undo log信息;最关心的是存放记录(数据)的页页与记录:一个页中可存放多条记录,所有的记录存在页的User Record区页中存储的记录被删除的记录并不会马上在页中清除,而是组成一个垃圾链表,置入可重用空间多条记录在一个页中紧密排列,成为一个堆heap_n原创 2021-11-15 21:44:58 · 1054 阅读 · 0 评论