读书笔记-高性能mysql(理解mysql知识点)
作者:
clever哲思 | 来源:发表于
2020-04-06 22:24 被阅读0次
第一章, mysql架构和历史
- mysql架构图, mysql是客户端/服务器的c/s架构
mysql架构图
- 事务的四个标准
- 原子性: 一个事务是一个不可分割的最小工作单元,整个事务的所有操作要么全部提交成功, 要么全部失败回滚.
- 一致性: 数据库总是从一个一致性的状态转换到另一个一致性的状态.
- 隔离性: 一个事务所做的修改在最终提交以前,对其他事务不可见.
- 持久性: 一旦事务提交, 则其所做的修改就会永久保存到数据库中
- 一个支持事务功能的数据库, 需要更加强大的cpu和更大的内存, 磁盘空间. 所以,根据业务是否需要事务处理, 来选择合适的存储引擎. 可以获得更高的性能
- 隔离的四个级别:, 未提交读, 提交读, 可重复读, 串行化, 默认级别是可重复读
- mysql服务器层不管理事务,事务是由下层的存储引擎实现的,所以在同一个事务中,使用多种存储引擎是不可能的
- mysql的大多数事务型存储引擎实现的都不是简单的行级锁, 基于提升并发性能的考虑, 它们一般都同时实现了多版本并发控制(MCC)
- innodb表是基于聚簇索引建立的, 对主键查询有很高的性能,但是二级索引中必须包含主键列.
- 如果转换表的引擎, 那么晚将失去原引擎相关的所有特性
- 修改引擎的三种方法:1, alter table. 2, 利用mysqldump导入导出. 3, 创建与查询, insert table innodb_table select * from my myisam_table;
第二章, MySQL基准测试
- 需要了解的基准测试套件: sysbench, 包括cpu基准测试, 文件I/O基准测试OLTP基准测试(OLTP基准模拟了一个简单的食物处理系统的工作负载)
第三章, 服务器性能剖析
- 这本书将性能定义为完成某件任务所需要的时间度量, 换句话说, 性能即响应时间
- 在MySQL当前版本中, 慢查询日志是开销最低、精度最高的测量查询时间的工具, 慢查询带来的开销特别小, 但是会消耗大量的磁盘空间. 所以不要长期启用慢查询日志, 只在需要收集负载样本的期间开启即可
- MySQL还有另一种查询日志, 叫"通用查询日志", 但很少使用
- 使用
show profile
剖析单条查询
第四章, schema与数据类型优化
- 选择优化的数据类型: 通常 1, 更小的更好; 2, 简单的更好, 整型比字符操作代价更低; 3,尽量避免NUll, 因为NUll会让mysql更难优化, 可为null的列使索引、索引统计和值比较都更复杂
- 有符号和无符号使用的相同的存储空间, 并具有相同的性能
- varchar类型用于存储可变长字符串, 是最常见的字符串数据类型. 它比定长类型更节省空间, 因为它仅使用必要的空间. varchar需要使用1或者2个额外的字节记录字符串的长度. varchar节省了存储空间, 所以对性能也有帮助, 但由于行是变长的, 在update时可能使行变的更长, 导致需要做额外的工作, innodb通过分裂页使行可以放进页内
- char类型是定长的: MySQL总是根据定义的字符串长度分配足够的空间. 当存储char时, MySQL会删除所有的末尾空格.
- 数据如何存储取决于存储引擎, 并非所有的存储引擎都会按照相同的方式处理定长和变长字符串. 不过, 填充和截取空格行为在不同的存储引擎是一样的, 因为这是在MySQL服务器层处理的
- blob和text都是为存储很大的数据而设计的字符串数据类型, 分别采用二进制和字符方式存储
本文标题:读书笔记-高性能mysql(理解mysql知识点)
本文链接:https://www.haomeiwen.com/subject/xpzuphtx.html
网友评论