nis*_*n97 1 mysql optimization
我目前正在建立一个使用 MySQL 数据库的网站,该数据库拥有超过 4000 万行数据。我使用一台服务器存储文件和单独的 mysql 服务器。两台服务器有20核,64G内存。
同时,我可以看到在执行最长的 SQL 查询时,我的 MySQL 服务器最多使用两个内核,因此执行最长的查询需要超过 38 秒。看看下面的结果。
用户@主机:dev_data @ localhost []
查询时间:38.113460 锁定时间:0.000514
Rows_sent: 10 Rows_examined: 48683733
如何配置我的 MySQL 服务器,以便它使用所有 20 个内核来处理查询?MySQL 版本是 5.6。
在下面的结果之上。

tl;dr 你不能强迫 MySQL 使用很多内核。
4000 万(4 千万)行对于 MySQL 来说是一个很大但不是很大的数据库。这完全在该软件的能力范围内。您不必采取绝望的措施来让 MySQL 处理如此大量的数据。不过,您必须正确索引它。
从最近的版本开始,MySQL 可以使用很多 CPU 内核。但它不使用它们来加速单个查询;这种工作量并没有令人尴尬地并行。 您无法让它为单个查询使用大量内核。它根本不能那样工作。
当它使用许多内核时,它使用它们来处理来自许多不同连接的同时工作负载。但是,在所有这些连接都访问相同的表中,即使它们可用,它也无法使用很多内核。
无论如何,您应该升级到 5.7 版。它使用多线程处理比 5.6 多的事情。
您将能够通过为查询工作负载建立适当的索引来提高性能。我们无法就此向您提供建议,因为您尚未提供有关现有表、索引、查询或多个客户端同时访问的任何细节。
您的服务器具有 20 个内核和 64G 的 RAM,为 MySQL 以及您提到的那种工作负载过度配置了内核和 RAM。您没有提到服务器的 I/O 功能。我想用 PCIe 接口的 SSD 驱动器替换你的机械磁盘驱动器会产生最大的不同。但这是基于很少信息的猜测。
我的直率建议是:出售那个庞大的服务器,或者将其作为管理程序主机投入使用,以用于许多虚拟机的其他用途。这对 MySQL 来说太过分了。
获取具有 16Gb 和四个快速内核的服务器。根据您的应用程序需要,使用额外的资金为其配置尽可能多的 PCIe SSD 驱动器。不要考虑购买小于约 0.2 TB 的 SSD 驱动器;它们比较大的要慢。为您的查询正确索引您的表。对于您提到的大小的表,不要担心核心使用;而是担心 I/O。
您可以花几十美元在云虚拟机(Amazon、Rack Space、Digital Ocean)上尝试所有这些,这样您就不会在另一台过度配置的服务器上浪费金钱。
| 归档时间: |
|
| 查看次数: |
12641 次 |
| 最近记录: |