但是最近基本还是把这本MySQL资料书看完了,姑且称之为资料书吧(虽然没有考试),有一些自己的感悟和认识,但是很多都停留在表面认识阶段, 很多都没用到。所以今天先整理一下相关要点。 还是从逻辑架构谈起吧(虽然书中就是从中说起,请原谅我的厚颜无耻)。MySQL的存储引擎架构很特别,分做三层架构,这也是与其它SQL的很大不同就在于此。查询处理、数据的存储/提取、和其他系统任务分离开来,而且这种处理和存储分离的设计方式可以在任何时候根据性能或者其他需求来选择数据存储的方式。 (1)最上层的服务不是MySQL锁独有的,它是用来连接处理、授权认证、安全等等。 第二层架构是MySQL的核心服务功能,其中包括解析、分析、优化、缓存及所有的内置函数,所有跨存储引擎的功能都在这层实现, 存储过程、触发器、视图等。 第三层主要包含了存储引擎(起主要负责MySQL中数据的存储和提取)。服务器通过API与存储引擎进行通信,着写API屏蔽了不同 存储引擎之间的差异。存储引擎API包含几十个底层函数。其中值得主要的是存储引擎是不会去解析SQL 的,不同的存储引擎之间也不 会互相通信,只是简单的响应上层服务器的请求(Innodb除外,因为他会解析外键)。 (2)事务。事务就是一组原子性的SQL 查询,或者说一个独立性的工作单元。它需要符合ACID特征。当存储引擎不支持事务时, 可以通过LOCK TABLES语句为应用提供一定程度的保护 (3)关于死锁、表锁、行锁这里不做细致的讨论。 (4)MySQL的存储引擎主要有Innodb和Myisam(请自行脑补他们大概有什么不同和区别),其他还有比如,只支持Insert和Select 的Archive引擎,访问速度比Myisam高一个数量级的Memory引擎,Merge引擎,Csv引擎等等,当然还包括其他开源第三方引擎。 (5)关于合适引擎的选择现在不做讨论(当你清楚知道每个引擎的特性时,想对于的业务场景也自然能选择正确) (6)转换表的引擎。ALTER TABLE语句、导入与导出、创建与查询 第二章讲的是MySQL的基准测试。当然,我们不是测试人员,用不着那么复杂的测试,再次略过。 第三章讲的是服务器性能剖析。这其中讲到了几个关于性能的问题。 (1)找出某条语句为什么执行不快 (2)如何确认服务器是否达到了性能最佳status(show profiles/show profileing=1/show status,慢查询日志) (3)找出及诊断杯用户描述成的“停顿、堆积或者卡死” 其实关于这几个问题有个简单的方法就是测量服务器的时间花费在哪儿,进而进行性能优化(降低响应时间)。此处也不再进行详细描述。1. ```