乡亲
我目前正在从事电信项目并处理 CDR(呼叫详细信息记录)文件,并基于该文件生成报告。我每天获得的记录约为 400 万条记录,每月平均约为 9000 万条记录。我们正在使用 mysql 数据库并运行存储过程来处理记录。问题是我们在运行查询时面临性能问题。查询大约需要 4 分钟来处理和获取结果。
服务器内存为 4GB。
我担心的是
我们使用的 RAM 是否足够用于此类项目
我想在这里得到一些严肃的 DBA 建议。
RAM 通常是数据库服务器的瓶颈,但不一定是最大的。真正理解查询变慢的原因很重要。现在鉴于有 9000 万条记录,可以肯定地说,在表上拥有正确的索引很重要。此外,在不知道查询细节的情况下,很难猜出它为什么慢。另一个需要考虑的方面是查询中连接的数量和类型。查询“更简单”(连接更少),通常这会加快查询速度。
最终,尽管我会对查询进行解释,以查看各个阶段以了解缓慢的来源。我将从这里开始了解如何优化查询:
RAM 不能是这里唯一的限制。您还需要有适当的数据库设计、服务器配置和索引。
如果您只处理数据以获取报告,请使用 MyISAM 引擎(如果尚未使用)。