因此,MySQL中使用InnoDB存储引擎的一个表将包含数十亿行(可能没有限制插入的数量).
你能告诉我我能做些什么样的优化来帮助加快速度吗?因为已有几百万行,它将开始变慢.
当然,如果你建议使用别的东西.我唯一的选择是PostgreSQL和Sqlite3.但我被告知sqlite3不是一个好选择.至于postgresql,我完全不知道它是怎么回事,因为我从来没有用过它.
我想,在该表中每秒至少大约1000-1500次插入.
对您的问题的简单回答是肯定的InnoDB将是数十亿行数据集的完美选择.
有许多可能的优化.
最明显的优化是设置一个大的缓冲池,因为缓冲池是InnoDB最重要的事情,因为InnoDB缓冲数据以及缓冲池中的索引.如果你有一个只有InnoDB表的专用MySQL服务器,那么你应该设置InnoDB使用的80%的可用RAM.
另一个最重要的优化是在表上有适当的索引(记住数据访问/更新模式),主要和次要.(请记住,主索引会自动附加到二级索引).
使用InnoDB还有一些额外的好处,例如防止数据损坏,自动恢复等.
至于提高写入性能,您应该将事务日志文件设置为总共4G.
您可以做的另一件事是分区表.
您可以通过将bin-log-format设置为"row",并将auto_inc_lock_mode设置为2(这将确保innodb在插入自动增量列时不保持表级锁定)来获得更多性能.
如果您需要任何具体建议,可以与我联系,我非常愿意提供帮助.
不知道 MySQL/InnoDB 部分(我认为它会应付)。但如果您最终寻找替代方案,PostgreSQL 可以在纸上管理无限大小的数据库。(根据常见问题解答,至少存在一个 32TB 数据库。)
您能告诉我可以做哪些优化来帮助加快速度吗?
您的里程数将根据您的应用程序而有所不同。但对于数十亿行,您至少要考虑对数据进行分区,以便在较小的表上工作。
对于 PostgreSQL,您还需要考虑在适当的情况下创建部分索引。
| 归档时间: |
|
| 查看次数: |
6732 次 |
| 最近记录: |