暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[译] MySQL性能调优:Top 10 技巧

原创 晨辉 2022-03-08
577
原文地址:https://blogs.oracle.com/mysql/post/mysql-performance-tuning-top-10-easy-tips
原文作者:David Stokes 

MySQL是一个久经考验、可靠的,能够快速创建,易于维护,并且具有出色性能的数据库。但是,明智使用如下这些简单的技巧一般还能提升其性能。
最好的实施方式是将这些技巧作用到一个schema或者database上,要在服务器上每个数据库实施这些小技巧,而不是在整个服务器实例上实施同一个技巧。

#1 使用InnoDB存储引擎而不是MyISAM存储引擎

InnoDB 支持事务,做基于时间、点的恢复非常好,支持行级锁,还有其他很棒的特性。
MyISAM 以上这些都不支持,许多年前它是做网站的首选,但现在InnoDB已经取代它了。
使用ALTER TABLE <table_name> ENGINE=InnoDB;命令将MyISAM转成InnoDB表,一般而言性能提升是立即可见的。它还有助于确保你参考MySQL手册关于锁记录时以确保你的查询利用了所有必要的可用项。

#2 在你的表上创建主键

InnoDB 是通过主键来存储数据的,你自己定义一个主键比InnoDB给你选一个主键使用上更好。唯一性意味着只有一行具有该值,这极大地帮助索引返回所要查询的数据。
当记录是单调递增时,InnoDB表现的最好。选择一些标识像UUID(不是单调递增)作为主键就是一个很差的选择。但是他们能够作为一个二级索引,二级索引是饮用主键索引的。

#3 在一些老的应用需要他们的情况下使用不可见列

如果有一个老的应用,你真的不想重建表或者查询,但是你需要一个主键呢?那么就使用不可见列作为主键吧。

#4 对你的查询做基准测试

保存FORMAT=TRADITIONAL 和 FORMAT=TREE格式的查询计划信息,数据大小信息,SHOW CREATE TABLE输出信息为将来做参考。当“数据库运行缓慢”的呼声不可避免地高涨时,你就有了进行评估的基础。
如果没有参考就没办法确定是否有任何东西发生了变化。

#5 检查索引

MySQL Workbench可以报告未使用的索引。未使用的索引不仅占用内存而且需要被维护。如果你不使用这个索引那么就清除它以释放资源。
此外,Workbench 能告诉你哪个查询没有使用到索引。这些查询是就很好的候选者,可以用来研究索引是否会显著提高查询的性能。

#6 使用不可见索引

在你清除一个索引之前,请检查服务器启动时间。如果系统是最近重新启动的,那么系统可能没有建立关于该索引的统计数据,因为它大约一周运行一次。如果不能确定,那么将这个索引设置为不可见,这样优化器就会忽略掉这个索引,但是它可以快速的设置为可见以防有个月度或者季度的报表需要用到它。

#7 使用Prepared 表达式

你不需要伴随着新数据每次发送完整的查询,Prepared 表达式让你仅仅发送需要的数据,这在带宽和时间上都是很大的胜利。
许多用于各种编程语言的MySQL连接器也有助于减少SQL注入问题的发生,因为它会检查传递的参数的类型,这样就不会执行‘Little Bobby Drop Tables’这样的语句了。

#8 使用函数索引

函数索引是一个使用值运算的简单方式用来加快搜索速度。函数索引可以让你直接查找到销售的商品成本和运输成本的组合值是哪一个具体值或者哪些客户的生日是2月?
但是要注意了,函数索引是依赖顺序的,这就意味着你创建一个(cost + shipping)的函数索引,你就必须在使用时以cost + shipping这个确定的顺序,因为cost + shipping这样查询会用到这个索引,但是shipping + cost这样就用不到了。

#9 定期运行下 ANALYZE TABLE

ANALYZE TABLE 会对表索引数据进行分析,并且会更新优化器在选择最合适执行计划时要使用到的统计信息。如果统计信息过期了这就像在城市之间旅行使用过期的数据方向,你最终能到达那里,但是很可能有要一个更好的方式。

#10 备份

一个数据管理员永远不会有足够的备份。使用MySQLSH’s util.dumpInstance() 和util.dumpSchema() 组件,它们能够快速地备份你的数据,你可以将一个副本从MySQL数据服务云移动到本地,反之亦然。
如果你想做基于时间点的恢复,那么同时保留这些二进制日志。
然后再做另外一个备份。
如果你不定期检查你的备份和测试你的数据的恢复方法,那么你就相当于把你的钥匙锁在了家里。

译者备注

以上十点综合介绍了在使用MySQL数据库需要注意的事项,注意这些点不仅有助于提升你的数据库性能还有助于数据安全,大家可以细细品味。

最后修改时间:2022-03-08 15:56:14
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论