如何修改MySQL表,每秒插入数百条记录,而不会出现任何停机/丢失数据或错误。
例如:添加新字段
由于
答案 0 :(得分:0)
Gut觉得你应该避免修改表格。另一种方法是将列添加到新表并链接到原始表以保持参照完整性,因此原始表保持不变。
另一种相当典型的方法是创建一个带有添加列的新表,将其与旧表交换,然后将数据添加回新表。虽然不是一个很好的解决方案。
MySQL专家可能不同意我的意见。
答案 1 :(得分:0)
好吧,如果我认为最好只插入:
CREATE TABLE the_table_copy LIKE the_table;
ALTER TABLE the_table_copy ADD new_field VARCHAR(60);
RENAME TABLE the_table TO the_table_backup;
RENAME TABLE the_table_copy TO the_table;
但是,如果足够快,首先复制它并尝试复制。然后在现实生活中做到这一点! :)
答案 2 :(得分:0)
好吧,我会锁定表格,添加字段,解锁表格。插件会有一点延迟,但我想这不会太麻烦。
答案 3 :(得分:0)
当您说“添加字段”时,您正在创建新列,或只更新列中的值?两者都是完全不同的东西。如果您只是更新列,请更改数据模型以支持同一表中同一行的多个版本,并继续在表的末尾添加新行。这为您提供了最佳的读写并发性。
除此之外,您还可以查看“Handler Socket”方法。 http://yoshinorimatsunobu.blogspot.com/search/label/handlersocket
答案 4 :(得分:0)
如果您只需要添加列,则没有理由要求停机。该表将在ALTER TABLE语句(毫秒)的持续时间内被锁定。在此期间提交的任何DML都必须等待,因此它可能会短暂地影响性能,但它不会导致任何异常,除非某处的代码明确检查锁定。