是否有任何陷阱/事情你需要知道什么时候改变自些至少
-
03-07-2019 - |
题
我的一个项目使用这些发动机在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,顺便说一句。
性能特征可以是不同的,因此可能需要保持眼睛上的负荷。
该数据将被罚款。