当前位置: 首页 > MySQL数据库

mysql优化的小提示有哪些

时间:2026-01-28 14:09:57

SQL性能提示

特定查询性能提示(有关索引的提示,请参见数据库设计提示):

1.使用EXPLAIN分析查询执行计划

使用解释查看查询执行的计划

2.使用慢速查询日志(始终打开!)

使用慢速查询日志(慢查询日志)

3.当您已经或可能使用分组方式时,不要使用DISTINCT

当你能或正在使用分组时不要使用 不同的

4.插入性能

插入性能

1.批量插入和替换

使用批量插入

2.使用加载数据而不是插入

用加载数据代替插入

5.限制m,n可能没有听起来那么快

极限m,n可能并没有听起来那么的快

6.如果您有>~2K条记录,请不要使用ORDER BY RAND()

如果你的记录大于2000条,请不要使用 兰德订单()

7.选择频繁更新的数据或大型数据集时,请使用SQL\u NO\u缓存

当你在查询经常更新和大数据集的数据时,使用SQL\u无\u缓存

8.避免在LIKE查询开始时使用通配符

避免在喜欢查询的变量的头字符中使用通配符

9.避免相关子查询和in select和where子句(尽量避免in)

避免相关子查询..

10.无计算比较--隔离索引列

不使用计算后的比较------可使索引列仍然有效

11.按顺序和限制使用等式和覆盖索引进行最佳工作

订购人和 限度在有索引和等于条件时效率更高

12.将文本/blob与元数据分开,如果不需要,不要将文本/blob放入结果中

把文本/斑点这两种数据分开,如果不需要的话,不要包含在结果中

13.派生表(FROM子句中的子查询)可用于检索BLOB而无需对其进行排序。(如果第一部分找到ID并使用then获取其余ID,则自连接可加快查询速度)

14.ALTER TABLE…ORDER BY可以按时间顺序对数据进行排序,并按不同的字段对其重新排序--这可以使该字段上的查询运行得更快(可能这会在索引中进行?)

15.知道何时拆分复杂查询并连接较小的查询

知道什么时候分割复杂查询和合并简单查询

16.如果可以,一次删除少量

17.使类似查询保持一致,以便使用缓存

把相似的查询改为一摸一样的查询,这样可以使用隐藏物

18.具有良好的SQL查询标准

19.不要使用不推荐的功能

不要使用未得认可得特性

20.将多个索引字段(<5.0)转换或打开为UNION可能会加快速度(有限制),在5.0之后,索引合并应该会加快速度。

在多索引列,把或改为协会可使速度加快(在5版本以下),

21.不要在Innodb表上每次搜索都使用COUNT*,可以重复几次和/或汇总表,或者如果需要对行总数使用COUNT*,请使用SQL_CALC_FOUND_rows并选择Find_rows()

不要在每一个搜索中使用计数*(在Innodb表中),可以使用SQL\u计算\u找到\u行和 选择已找到的行()代替他们

22.在重复密钥更新时使用INSERT…(插入忽略)以避免必须选择

23.使用groupwise maximum而不是子查询

扩展性能提示:

1.使用基准测试

2.隔离工作负载—不要让管理工作干扰客户的性能。(即备份)

3.调试糟透了,测试石头!

4.随着数据的增长,索引可能会发生变化(基数和选择性会发生变化)。结构可能会发生变化。使您的模式与代码一样模块化。使您的代码能够扩展。计划并接受变化,并让开发人员也这样做。

网络性能提示:

1.通过只获取您需要的内容来最小化流量。

通过查询你需要得数据来减少通信流量

1.分页/分块数据检索限制

2.不要使用选择*

不要使用 选择*

3.如果长时间的查询效率更高,那么要小心大量小的快速查询

2.在适当情况下使用multi_查询以减少往返

操作系统性能提示:

1.使用适当的数据分区

1.对于集群。在需要集群之前,就开始考虑集群

2.保持数据库主机尽可能干净。您真的需要该服务器上的窗口系统吗?

3.利用操作系统的优势

4.缩减cron脚本

5.创建一个测试环境

6.源代码管理架构和配置文件

7.对于LVM innodb备份,请还原到不同的MySQL实例,以便innodb可以前滚

8.适当划分

9.在拥有真实数据时对数据库进行分区——在拥有真实数据之前,不要假设您知道自己的数据集

MySQL服务器总体提示:

1.innodb_flush_commit=0可以帮助从机延迟

2.优化数据类型,使用一致的数据类型。使用过程分析()帮助确定满足您需要的最小数据类型。

3.使用乐观锁,而不是悲观锁。尝试使用共享锁,而不是独占锁。共享模式与更新模式

4.如果可以,压缩文本/水滴

5.压缩静态数据

6.不要经常备份静态数据

7.如果合适,启用并增加查询和缓冲区缓存

8.配置参数--http://docs.cellblue.nl/2007/03/17/easy-mysql-performance-tweaks/ 这是一个很好的参考

9.配置变量和提示:

1.使用提供的配置文件之一

2.密钥缓冲区、unix缓存(保留一些RAM空闲)、每个连接变量、innodb内存变量

3.注意全局变量与每个连接变量

4.检查显示状态和显示变量(5.0及以上版本中的全局|会话)

5.注意交换,特别是与Linux的交换,“交换”(对于innodb数据文件,绕过操作系统文件缓存,如果可能,innodb_flush_method=O_DIRECT(这也是操作系统特有的))

6.整理表碎片,重建索引,进行表维护

7.如果您使用innodb_flush


上一篇:MySQL数据库字符串函数有哪些
下一篇:MySQL怎么创建多个表的更新与删除
mysql
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素