【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类型,最好避免使用该类型
标识符选择
整数通常是标识列最好的选择
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!