随着容量和负载的增加,MySQL 的性能会日趋缓慢。这里有七点建议能够保证 MySQL 的平稳运行。
性能是我们衡量应用的一种方式,而应用性能的一项指标就是用户体验,也就是平时我们常说的:“用户需要等待超过合理的时间,才能获得他们想要的东西吗?”
在不同的情况和场景下,该指标会有所不同。比如说:对于移动购物应用来说,其响应时间不能超过几秒钟;而对于一个员工的人力资源页面而言,其响应时间则允许比几秒钟更长。
因此,不管是什么样的标准,维持应用程序的良好性能都是至关重要的,否则就会引发用户的抱怨(或更糟的是用户转而使用其他的应用)。而数据库性能就是影响应用程序性能的因素之一。
可以说,应用程序、网站和数据库之间的交互会直接影响到应用服务水平的确立。
这种交互的一个核心组成部分是:各种应用程序如何去查询数据库,以及数据库是如何响应各种请求的。
不论是哪一种标准,MySQL 都是时下最流行的数据库管理系统之一。越来越多的企业已将 MySQL(和其他开源的数据库)视为其生产环境中的数据库解决方案。
MySQL 有许多配置方法可以确保您的数据库能够快速地响应各种查询,同时仅对应用程序性能造成细微的下降。
以下就是能够帮助您优化 MySQL 数据库性能的 7 点必备技巧:
学习如何使用EXPLAIN
创建正确的索引
拒绝默认设置
将数据库载入内存中
使用SSD存储
横向扩展
追求可视性
学习如何使用 EXPLAIN
在您对数据库做任何设计决策时,有两个方面非常重要:
应用实体之间如何被映射到各个数据表(数据库模式架构)上。
应用程序如何获取(查询)到它们所需格式类型的数据。
复杂的应用程序必然有着复杂的模式架构和查询。如果您想让自己的各种应用具备所需的性能和扩展性,那就不能单纯依靠直觉去理解各种查询的执行机制。
建议您认真学习如何去使用 EXPLAIN 命令,而不是凭空猜想。该命令会向您展示查询是如何被执行的;并深入地演示有关性能的真实表现情况,以及查询是如何伴随着数据量的变化进行扩展的。
像许多 MySQL Workbench 之类的工具都可以将 EXPLAIN 的输出可视化地展示给您,不过您仍然需要了解与它相关的基本知识。
EXPLAIN 命令的输出有两种不同的格式:老式的表格形式和较新的、能够提供更为细节化的、结构化的 JSON 文档。
如下所示:
mysql>explain format=json selectavg(k)fromsbtest1 whereid between 1000and2000\G***************************1.row ***************************EXPLAIN:{“query_block”:{“select_id”:1,“cost_info”:{“query_cost”:“762.40”},“table”:{“table_name”:“sbtest1”,“access_type”:“range”,“possible_keys”:[“PRIMARY”],“key”:“PRIMARY”,“used_key_parts”:[“id”],“key_length”:“4