gpt4 book ai didi

MySQL:InnoDB 与 MyISAM:如何以及为什么要改变 (Amazon RDS)?

转载 作者:可可西里 更新时间:2023-11-01 06:29:24 25 4
gpt4 key购买 nike

我没有设置我的数据库并注意到我的一些表是 innoDB 而另一些是 MyISAM。我有兴趣改变它们的原因是因为 Jurg van Vliet (在 AWS 上撰写 O'Reilly 书籍)says Amazon RDS 的自动数据库备份能力取决于所有表都是 innoDB 表。

将数据库中的所有表转换为 InnoDB 的命令是什么?

最佳答案

这是一个将当前数据库中的所有 MyISAM 表转换为 InnoDB 的存储过程:

DROP PROCEDURE IF EXISTS convert_all_tables_to_innodb;

DELIMITER //

CREATE PROCEDURE convert_all_tables_to_innodb()
DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY INVOKER
COMMENT ''
proc: BEGIN
DECLARE b_not_found BOOL DEFAULT FALSE;
DECLARE v_table_name VARCHAR(255);
DECLARE cur1 CURSOR FOR
SELECT
table_name
FROM
information_schema.tables
WHERE
table_schema = DATABASE() AND
table_type = 'BASE TABLE' AND
engine = 'MyISAM'
ORDER BY
1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b_not_found = TRUE;

OPEN cur1;

SET b_not_found = FALSE;

loop1: LOOP
FETCH cur1 INTO v_table_name;
IF b_not_found THEN
LEAVE loop1;
END IF;

SET @sql = CONCAT('ALTER TABLE ', v_table_name, ' ENGINE=InnoDB');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DROP PREPARE stmt;
END LOOP;

CLOSE cur1;
END;
//

DELIMITER ;

要运行它,只需执行:

CALL convert_all_tables_to_innodb();

关于MySQL:InnoDB 与 MyISAM:如何以及为什么要改变 (Amazon RDS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com