Mysql 详解(一)

  • Q: 为什么别人问你 MySQL 优化的知识 总是没有底气.
  • A: 因为你只是回答一些大而化之的调优原则,
  • 比如:”建立合理索引”(什么样的索引合理?) “
  • 分表分库”(用什么策略分表分库?)
  • “主从分离”(用什么中间件?)
  • 并没有从细化到定量的层面去分析.
  • 如 qps 提高了%N? 有没有减少文件排序?语句的扫描行数减少了多少?
  • 没有大量的数据供测试,一般在学习环境中,只是手工添加几百上万条数据, 数据量小,看不出语句之间的明确区别.
  • Q: 如何提高 MySQL 的性能?
  • A: 需要优化,则说明效率不够理想. 因此我们首先要做的,不是优化,而是--诊断. 治病的前提,是诊病,找出瓶颈所在. CPU,内存,IO? 峰值,单条语句?

话不多说,步入正题!

一. MySQL安装

https://www.cnblogs.com/ayyl/p/5978418.html

二.mysql 性能调优的思路

0: 最好的优化不查

如果一台服务器出现长时间负载过高 /周期性负载过大,或偶尔卡住如何来处理?

大的思路-------- 是周期性的变化还是偶尔问题?

是服务器整体性能的问题, 还是某单条语句的问题?

具体到单条语句, 这条语句是在等待上花的时间,还是查询上花的时间. 唯一的办法-----监测并观察服务器的状态. 1:观察服务器状态, 一般用如下 2 个命令

Show status; Show processlist;

1:建表: 表结构的拆分,如核心字段都用 int,char,enum 等定长结构

表的优化与列类型选择

表的优化:

1: 定长与变长分离

text,blob, 如 id int, 占 4 个字节, char(4) 占 4 个字符长度,也是定长, time即每一单元值占的字节是固定的. 核心且常用字段,宜建成定长,放在一张 ### 表. 而 varchar, 这变长字段,适合单放一张表, 用主键与核心表关联起来.

2:常用字段和不常用字段要分离. 需要结合网站具体的业务来分析,分析字段的查询场景,查询频度低的字段,单拆出来.

3:合理添加冗余字段

2:非核心字段,或用到 text,超长的 varchar,拆出来单放一张表. 建索引: 合理的索引可以减少内部临时表(索引优化策略里详解)

3:写语句: 不合理的语句将导致大量数据传输以及内部临时表的使用.

原文地址:https://www.cnblogs.com/zhangzack/p/10066360.html