我有一个包含2500万行的数据库表,每个行大约3K(即约75GB),加上我使用的多个索引(额外的15-20GB),无法完全放入内存中(机器只有64GB)。典型的查询通过索引定位300行,可选地使用其他索引将它们过滤到50-300行,最后获取匹配的行。响应时间在热数据库上为20毫秒,在冷数据库上为20秒。我有两个相关的问题:
在任何给定的时间,如何检查特定表和索引的缓存部分(%)在内存中?
在打开数据库进行查询之前,最好的方法是什么?例如,“select *” 强制进行顺序扫描(在冷数据库上需要约15分钟),但随后的响应时间仍然很差。是否有内置的方式来完成这项任务而不是通过查询?
谢谢,也可以通过电子邮件回复(info@shauldar.com)
-- Shaul