《高性能MySQL》第2章~第4章

第2章 MySQL基准测试

基准测试有两种策略:一是针对整个系统的整体测试,二是单独测试MySQL。也叫集成式和单组件式。

下面为测试何种指标:

吞吐量:是单位时间内的事务处理量。

百分比响应时间

Web服务器并发性:会话处理机制可以存储多少数据
并发性:任意时间有多少并发的请求
(一个应用可能有成百上千的数据库连接,但只有几十个在执行查询)

可扩展性


概念:TPS(每秒处理事务数)
QPS(每秒查询次数)

缓存命中:用已有的副本为某些达到缓存的请求提供服务。

sysbench工具(多线程系统压测工具):不仅可以测试数据库性能,还能测试运行数据库的服务器的性能。


第3章 服务器性能剖析

是什么导致了性能低下:

  1. 资源请求过多,导致匮乏
  2. 配置错误
  3. 资源已损坏

第4章
4.1 需要优化的数据类型

整形比字符串占用更少
最好指定列为NOT NULL
对于经常变更的数据,CHAR比VARCHAR更好。它是定长的,不容易产生碎片。
BLOB和TEXT类型,为很大数据设计的字符串类型,分别用二进制和字符方式。
枚举字段按内部存储的整数排序的,而非字符串。
MySQL会将每个数据的位置存储为整数,且在表的.frm文件中保存数字-字符串关系。
避免使用ENUM,SET,BIT
TIMESTAMP占存储空间小,默认第一个列值为当前时间。

范式化和反范式化
范式化:把 1 2 3的表拆成1 2和2 3

  • 更新操作快
  • 范式化的表通常更小
  • 很少有多余的数据意味着很少用DISTINCT和GROUP BY
  • 缺点:通常需要关联

inner join(等值连接) 只返回两个表中联结字段相等的行

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

索引:不需要表名.属性就能调用的属性?

4.4 缓存表与汇总表
有时候提升性能最好的方法是在同一张表中保存衍生的冗余数据。有时候也要创建完整独立的缓存表。
缓存表是比较简单可以从其他scheme表获取数据的表,汇总表保存GROUP BY汇总的表。
两种表必须决定是实时维护还是定期重建。
建额外索引,增加冗余列,写变慢,读变快

快速创建MyISAM索引:只对非唯一索引有效,禁用索引,载入数据,重启索引

猜你喜欢

转载自blog.csdn.net/qq_24572475/article/details/82689132