【MySQL】优化

【MySQL】优化

性能查看

1、解释SQL,explain

 

2、show profile

mysql 5.1以后版本引入的

开启
mysql> set profiling = 1;

给每一个查询生成一个整形的标识
mysql> show profiles;

查看查询具体耗时在哪里
mysql> show profile for query 1;

 

清空状态
flush status;

执行sql
select * from admin_user;

查看状态值
show status where Variable_name like 'Handler%' or Variable_name like 'Created%';

3、显示全局状态,show global status

threads_connected, threads_running

4、show processlist

 

数据类型优化

1、更小的通常更好

选择不会超过范围的最小类型,小类型占用CPU内存磁盘都少。

2、简单就好

简单数据类型需要更少的CPU,比如整形比字符串代价底

3、尽量避免NULL字段

因为可为NULL的列使得索引、索引统计和值比较更为复杂,且会使用更多的存储空间。当可为NULL的列被索引时,每个索引记录需要一个额外的字节。

整数类型

字符串类型

1、VARCHAR(5)和VARCHAR(200)使用短的更有优势

当存储'hello'时磁盘开销是相同的,但加载到内存是不同的,更长的列会消耗更多的内存,因为MySQL会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序和操作时会特别糟糕

2、BLOB和TEXT排序

order by substring(column, length) 将列转换为字符串,这样可以使用内存临时表,但要确保截取的字符串足够短,不会时临时表的大小超过max_heap_table_size或tmp_table_size。

日期和时间类型

DATETIME: 1001~9999精度秒,使用8个字节存储

TIMESTAMP:从1970年01月01日开始的秒(格林尼治时间),使用4个字节存储,尽量使用因为比DATETIME空间效率更高

FROM_UNIXTIME()把unix时间戳转为日期,UNIX_TIMESTAMP()把日期转为unix时间戳

位数据类型

MYSQL把BIT当作字符串类型,而不是数字类型,应当慎用BIT类型,最好避免使用该类型

标识符选择

整数通常是标识列最好的选择

posted @ 2022-07-22 11:08  翠微  阅读(42)  评论(0编辑  收藏  举报