我有一个简单的数据库,有 4 个表,每个表有几百万行,还有几个索引。我每分钟执行数百次更新和插入。读取频率要低得多,但它们需要快速 - 对于 Web 应用程序。读取应该有优先权——我可以延迟写入,如果它有助于提高阅读的敏捷性。
目前,当我不编写插入和更新时,选择都很好。当我同时写作时,事情可能会变慢 - 有时会很慢。服务器肯定会受到 IO 限制——我使用 iostat 并看到在高写入期间磁盘单元化率为 99%。
明天我将尝试削减一两个索引,缩小行大小,并禁用查询缓存。有没有人对如何调整表或 mysql 本身以进行大量写入和少量读取有任何其他建议?
这些表当前设置为使用具有紧凑行的 innodb 引擎,并且除了缓冲池大小之外,大多数配置仍设置为默认值。db 将继续快速增长,因此不能将其全部放在 ram 中。
更新:它在 slicehost.com - 1gb ram,raid 10。