@ 目录 一.MySQL服务器逻辑架构 二.并发控制 1.读写锁 2.锁粒度 3.表锁 4.行级锁 三.事务 1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(isolation) 4.持久性(durability) 四.隔离级别 1.未提交读 read uncommited 2.提交读 read commited 3.可重复读 repeatable read 4.可串行化 serializable 五.死锁 六.事务日志 七.多版本并发控制MVCC 1.sel…
一.先了解一下MySQL查询的执行过程 MySQL在查询时,它是由很多子任务组成的,每个子任务都会消耗一定的时间,如果要想优化查询,实际上要优化其子任务,可以消除一些子任务.减少子任务的执行次数.让子任务执行的更快. MySQL查询的执行过程:从客户端到服务器.然后在服务器进行解析.生成执行计划.执行.返回结果给客户端. 执行是最重要的阶段,包括调用存储引擎检索数据.调用后的数据处理.排序.分组等: 查询需要在不同的地方花费时间,包括网络.CPU计算.生成统计信息.生成执行计划.锁等待等,尤其是…
一.选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要. 1.更小的 一般情况下,应该尽量使用较小的数据类型,更小的数据类型通常更快,因为占用更少的磁盘.内存和CPU缓存,处理时需要的CPU周期更短. 2.更简单的 简单的数据类型通常需要更少的CPU周期,整形比字符串类型代价更低,因为字符集和校验规则使字符比较比整形比较更复杂. 3.尽量避免NULL 很多表都包含可为NULL的列,即使应用程序并不需要保存NULL也是如此,因为可为NULL是列的默认属性,…
一.索引 索引是存储引擎用于快速查找记录的一种数据结构.我觉得数据库中最重要的知识点,就是索引. 存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣.例如MyISAM使用前缀压缩技术使得索引更小,但InnoDB则按照原数据格式进行存储.MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行. B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同. B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来…
一.索引 索引是存储引擎用于快速查找记录的一种数据结构.我觉得数据库中最重要的知识点,就是索引. 存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣.例如MyISAM使用前缀压缩技术使得索引更小,但InnoDB则按照原数据格式进行存储.MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行. B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同. B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来…
一.缓存表和汇总表 有时提升性能最好的方法是在同一张表中保存衍生的冗余数据,有时候还需要创建一张完全独立的汇总表或缓存表. 缓存表用来存储那些获取很简单,但速度较慢的数据: 汇总表用来保存使用group by语句聚合查询的数据: 对于缓存表,如果主表使用InnoDB,用MyISAM作为缓存表的引擎将会得到更小的索引占用空间,并且可以做全文检索. 在使用缓存表和汇总表时,必须决定是实时维护数据还是定期重建.哪个更好依赖于应用程序,但是定期重建并不只是节省资源,也可以保持表不会有很多碎片,以及有完全…
@ 目录 一.拆分查询 二.分解关联查询 三.查询的执行过程 四.优化器的一些优化手段 1.重新定义关联表的顺序 2.将外连接转化为内连接 3.使用增加变换规则 4.优化count().max().min() 5.预估并转化为常量表达式 6.覆盖索引扫描 7.提前终止查询 五.MySQL如何执行关联查询 六.查询执行引擎 七.分页 一.拆分查询 将大查询拆分成小查询,每个查询功能完全一样,只是一小部分,每次只返回一小部分查询结果. 比如在删除旧数据的时候,如果用一个大的语句一次性删的话,则可能需…
点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发. python的优势? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无限的,国内:豆瓣.搜狐.金山.腾讯.网易.百度等国内知名…
点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Python的根本类型 第4篇 Python中表明“组”的概念与定义 第5篇 变量与运算符 第6篇 分支.循环.条件与枚举 第7篇 包.模块.函数与变量效果域 第8篇 Python函数 第9篇 高档部分:面向对象 第10篇 正则表达式与JSON 第11篇 Python的高档语法与用法 第12篇 函数式编程: 匿名函数…
原文链接:https://fuckcloudnative.io/posts/linux-capabilities-in-practice-2/ 该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 Linux capabilities 非常晦涩难懂,为此我专门写了两篇文章来解释其基本原理和设置方法.本文将会继续研究 Linux capabilitie…