我的一个项目使用这些发动机在MySQL,但我在考虑改变它至少我需要的事务的支持,在这里和那里。

  • 我应该在什么时或之前考虑这样做?
  • 我可以改变的动机,或者应当将数据可以准备呢?
有帮助吗?

解决方案

是的绝对的,还有许多事情,你应该测试应用程序非常彻底:

  • 交易可以僵局而需要重复。这种情况下(在一些情况下),即使有一个autocommitted交易这只插入一个行。
  • 光盘的使用率将几乎肯定会增加
  • I/O负荷期间,写入将几乎肯定会增加
  • 行为的索引将会改变,因为少使用的群集的指标-这可能是一个有益的效果在某些情况下
  • 您的备战略将受到影响。考虑这仔细。

迁移过程本身将需要进行仔细的规划,因为它将需要很长时间,如果你有很多的数据(在此期间的数据将只读,或者完全无法做检查!)

其他提示

有一个很大的警告。如果你让任何种类的硬件故障(或类似的)期间写,少将损坏的表格。

些也将会,但mysqlcheck--汽车修理会修复它们。试图这与少表将失败。是的,这是从经验。

这意味着你需要有一个良好的定期数据备份计划使用少.

一些其他说明:

少不重新分配免费的文件系统上可用空间后降表/数据库或删除记录,这是可以解决的"倾销和进口"或设定 innodb_file_per_table=1 在我的。cnf.

加入/消除索引上大少表可能非常不好受,因为它锁定目前的表格,创建一个临时一个与你改变的索引和数据插入排,通过行。还有一个 插件从Innobase, 但它仅适用于MySQL5.1

少也是更强烈的记忆,我建议你们一样大 innodb_buffer_pool_size 变量作为你的服务器记忆允许(70%至80%应该是一个安全的赌注).如果你的服务器UNIX/Linux,考虑原则变 vm.swappiness 0和使用 innodb_flush_method=O_DIRECT 避免双重缓冲。总是试验如果你打交换切换时这些价值观。你总是可以阅读更多 Percona的博客, ,这是很大的。

此外,可以运行 mysqlbackup--single-transaction --skip-lock-tables 并没有表锁的同时,备份开始。

在任何情况下,少是巨大的,不要让一些缺陷阻止你。

只是改变该表并设定了发动机应该是美好的。

  • 一个大的注意的是, select count(*) from MyTable很多 慢在少于些.
  • auto_increment值将重置的最高值在表+1在服务器重新启动后--这可以引起有趣的问题,如果你有一个混乱的db与一些删除。
  • 最佳服务器的设置,都将是不同的一些主要数据库。
  • 确保大小的少文件是大到足以容纳所有你的数据,或只被钉在十字架上,通过不断重新分配的时候你改变引擎的表格。

如果你打算使用少作为一种方法以获得并查询,然后你会想要设置 innodb_file_trx_commit=1 所以你得到了一些性能回来。另一方面,如果你是在寻找重新编码,用以交易的了解,然后决定此设置将一部分一般业绩审查需要的少设置。

其他主要的是要注意的是,少不支持FullText指数,也不插入延迟。但是,些不支持参照完整性。:-)

但是,你可以搬过来只表,你需要事务的意识。我已经做到了这一点。小表格(多达好几千的行)常常可以改变on-the-fly,顺便说一句。

性能特征可以是不同的,因此可能需要保持眼睛上的负荷。

该数据将被罚款。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top