我有一个大小约为 170GB 的数据库,行数介于 20.000 - 700.000.000 行之间(取决于表)。目前我正在使用 MyISAM 存储引擎。
就我而言,查询(读取)速度非常重要,但事务性是可选的。
我的 CRUD 操作估计是:
- 98% 阅读
- 2% 插入
- < 1% 更新和删除
我有一个大小约为 170GB 的数据库,行数介于 20.000 - 700.000.000 行之间(取决于表)。目前我正在使用 MyISAM 存储引擎。
就我而言,查询(读取)速度非常重要,但事务性是可选的。
我的 CRUD 操作估计是:
您在这里唯一真正的选择是介于
InnoDB
和 Percona 的XtraDB
引擎之间 - 请参阅此页面。巧合的是,我今天早上在 MySql 中写了一个将所有表引擎从“MyISAM”一次更改为“InnoDB”的答案,其中有一个查询,关于如何转换
MyISAM
为InnoDB
您可能感兴趣的?有很好的理由不使用任何非交易性的东西!是的——因为它们的事务能力——你得到了 DRI (
Declarative Referential Integrity
)。在应用程序端实施 DRI 是一场等待发生的灾难——而如果你使用 RDBMS,你就有一个经过数百万人测试的系统。如果您“自己动手”,则每次要为该特定架构编写新应用程序时都必须重写它 - 如果您的数据很重要,这将会发生!我会敦促您使用 InnoDB 或 XtraDB,但如果您坚持使用 NTE,那么请使用 Aria!- 维拉斯InnoDB,句号,句号。一个警告:磁盘空间将增加 2 倍到 3 倍。
这讨论了您需要注意的各种事项:http: //mysql.rjweb.org/doc.php/myisam2innodb。它提供了所需的
ALTERs
.请更改设置。最重要的是减少
key_buffer_size
和增加innodb_buffer_pool_size
。(见我的链接。)“读取速度”——Oracle 在最近几个版本中一直在“证明” InnoDB 更快。由于 InnoDB 中 PK 的“集群”,最好对索引(主要和次要)进行一些更改。