我在MariaDB数据库中有一个表,该表中有1.25亿行,用于存储自动数据分析的结果。每天随机写入几千行。桌子上的查询每天发生几次,并且可能返回几千或几百万个结果。读取性能最重要,因为这发生在用户面前。
目前,我使用MyISAM,它通常工作良好,除非结果集超过几千行。我在用于查询的列上有索引。查询缓存有帮助,但是很少有用户会多次执行相同的搜索。
我确定我可以使用很多优化技术(我也很想听听!),但是最基本的问题是具有这种大小和这种使用模式的表,什么是最好的MariaDB存储引擎桌子吗?
引擎之间的索引实现有很大不同,可以防止在不看到实际查询和SHOW CREATE TABLE
的情况下回答您的问题。
InnoDB是几乎所有用例中最快的引擎。你有多少RAM?你的桌子多大?我要寻找的部分是您的查询是受CPU约束还是受I / O约束。
取决于查询的详细信息,利用InnoDB的“集群” PRIMARY KEY
可以提高效率。这在MyISAM中不直接可用。
您正在处理一千或一百万行?总结一下?如果是这样,那么有一种方法可以使查询运行速度快十倍:http://mysql.rjweb.org/doc.php/summarytables