缩放大型MYSQL表

时间:2014-10-17 11:42:48

标签: mysql

我的桌子增长很快,目前它有47000000多行。

即使是非常简单的查询,有时也需要 46 秒。

SELECT id, userId, visitorId, date FROM  user_views LIMIT 20000000, 1;

表结构是:

Field      Type             Null  Key   Default Extra
id         int(11)unsigned  NO    PRI   NULL    auto_increment
userId     int(11)unsigned  NO    MUL   NULL     
visitorId  int(11)          NO    MUL   NULL     
date       datetime         NO    MUL   NULL     

应用程序已经运行了1个主服务器和6个从服务器。无法承受更多实例。

在id

上有btree索引

有没有办法让它更快?

由于

1 个答案:

答案 0 :(得分:2)

首先,您应该考虑使用不同的存储方法。根据您的使用情况,关系数据库可能不是最佳选择。例如。如果99%的操作都写入表但没有更新现有记录(列名称建议的内容),那么nosql数据库可能会更好地执行。

其次,在没有任何特定订单标准的情况下跳过20000000行(基于当然的索引)使DBMS可以应用任意顺序,这可能不是最理想的。

我不了解MySQL内部优化机制,但LIMIT仅在构建完整个结果集后应用,这意味着您已将整个表加载到内存中。因此,请尝试使用WHERE语句之前减少结果集的大小限制它。