IT评测·应用市场-qidao123.com技术社区

标题: MySQL - 性能优化 [打印本页]

作者: 小小小幸运    时间: 2024-12-2 11:52
标题: MySQL - 性能优化
使用 Explain 举行分析

Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。
比较重要的字段有:

优化数据访问


重构查询方式

一个大查询假如一次性实行的话,可能一次锁住很多数据、占满整个事件日志、耗尽系统资源、阻塞很多小的但重要的查询。
  1. DELEFT FROM messages WHEREcreate< DATE_SUB(NOW(),INTERVAL3MONTH);
  2. rows_affected =0do { rows_affected = do_query("DELETE FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000") } while rows_affected 0
复制代码
将一个大毗连查询分解成对每一个表举行一次单表查询,然后将结果在应用程序中举行关联,这样做的好处有:

  1. SELECT*FROM tab JOIN tag_post ON tag_post.tag_id=tag.id JOIN post ON tag_post.post_id=post.id WHERE tag.tag='mysql';
  2. SELECT*FROM tag WHERE tag='mysql';SELECT*FROM tag_post WHERE tag_id=1234;SELECT*FROM post WHERE post.id IN(123,456,567,9098,8904);
复制代码
慢SQL优化方案

冷热隔离

参考优易,冷热数据隔离,几乎不会再更新的数据和操纵频繁的订单数据分开
代码复杂度高,影响范围广
标签表-横表

orderId-tag1-tag2
字段较多,索引建不完
数据维护复杂度上升
标签表-纵表

orderId-tag1
orderId-tag2
多个标签与或非查询条件sql比较难写,性能也不太好评估
数据维护复杂度上升
订单表加索引

重新梳理一份索引
用工具导数据,然后停机,重建索引
欺压限制走某个索引

汗青数据

归档,现在1年
分库分表

店肆ID、堆栈ID
尽可能查询必要的数据

懒加载、必要的时候查询、前端冗余查询
列式数据库

ck

参考:
explain分析sql语句性能详解_explain sql-CSDN博客
MySQL索引原理及慢查询优化

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4