因为我的MySQL表使用InnoDB存储引擎,可能会包含多十亿行数据(潜在没有插入数量限制)。你能告诉我如何优化以加快速度吗?因为即使只有几百万行,速度也会变慢。如果您建议使用其他东西,那么我唯一的选择是PostgreSQL和Sqlite3。但是我被告知sqlite3不适合这种情况。至于postgresql,我完全不知道它是什么,因为我从未使用过。我想象至少需要每秒在该表中进行1000-1500个插入操作。
优化
MySQL 5.4版本及以上不支持部分索引。[3] 在MySQL中,"部分索引"这个术语有时用于指前缀索引,其中仅存储每个值的截断前缀。这是另一种减小索引大小的技术。[4]
关于MySQL/InnoDB部分我不太清楚(我认为它应该能应对)。但如果你最终考虑其他选择,PostgreSQL在理论上可以管理无限大小的数据库。(根据FAQ,至少存在一个32TB的数据库according to the FAQ。)
你能告诉我有哪些优化措施可以帮助加快速度吗?
你的应用程序会因情况而异。但是对于数十亿行数据,你至少需要考虑将数据进行分区,以便在较小的表上工作。
在PostgreSQL的情况下,你还需要根据需要创建部分索引。
http://www.mysqlperformanceblog.com/2006/06/09/why-mysql-could-be-slow-with-large-tables/
如果您有一个非常大的表(数十亿条记录)并且需要对该表进行数据挖掘(读取大量数据的查询),MySQL 可能会变得非常缓慢。 大型数据库(200GB+)是可以接受的,但是当尝试读取不适合内存的大组时,它们受到 IO/ 临时表写入磁盘和多个其他问题的限制。