(在你骂我白痴或开始大笑之前,请记住这对我来说是一笔真正的交易,我不能取消这个任务,因为它是一个更大项目的一部分)
我有一个数据库服务器,它的大小非常大,并且在非常小的服务器上运行,即。32GB 内存,24 核。在周末期间,我们将向机器添加 18GB 的 RAM 以使其更强大(白天的服务器负载跃升至平均 80 !!),直到我们解决使用该数据库的应用程序的性能问题。
我怀疑负载是由 DB 引起的,因为缺少可用 RAM(SWAP 中总是有大约 5GB)。
这个数据库有多个小表和一个巨大的表,它以大约 350,000 条记录/小时的速度接收 GPS 和 IO 数据,并且这个表按分区/月进行分区。
Mysqltuner 建议在所有表上运行优化表,但我读过在 InnoDB 表上这样做是无用的,而且需要很长时间。
这是脚本输出的一个片段:
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Reduce your overall MySQL memory footprint for system stability
Adjust your join queries to always utilize indexes
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
Variables to …
Run Code Online (Sandbox Code Playgroud)