读书笔记之-《高性能MySQL》
数据库相关的知识,看了《高性能MySQL》和《数据库系统实现》两本。两本书综合看效果更好。 《高性能MySQL》从使用的角度入手,《数据库系统实现》从原理的角度入手。以前学习数据库相关的知识时有个执念,一定要弄明白它是怎么实现的,就直接买了一个《MySQL内核:Innodb存储引擎》,结果看不懂,束之高阁。 数据库的知识,个人觉得如下的顺序比较合理。 硬盘 《数据库系统实现》在第二章就单独用一章的篇幅讲解磁盘的存储原理。这是因为计算机内置组件中具备持久存储能力的只有硬盘,软件屈从于硬件。因此理解磁盘的存储特点才能理解软件设计背后的逻辑。磁盘存储有如下的特点: 特性A:相比CPU的延迟,磁盘延迟非常非常大。 在《性能之巅》中有做过对比,对于3.3GHz的CPU, 一个指令周期为0.3ns;机械硬盘一次I/O的延迟为1~10ms。这个差距有多大,如果一个CPU指令周期为1s, 那么机械硬盘一次I/O的延迟为1~12个月。真是等到花儿都谢了。 特性B:磁盘是块设备,每次写入都是按块来的。通常一个块为512byte。即使用硬盘,得注意 不能用轮船只运输一个土豆到美国 。 特性C:顺序IO的性能远远高于随机IO的性能。因为顺序IO避免了寻道时间和旋转延迟。 上述的特性不仅影响了数据库的设计,更是深刻影响了操作系统的设计,例如 page cache 读写 数据库的操作基本上就是更高阶的读写: