gpt4 book ai didi

mysqlcheck with --optimize 但仅适用于 MyISAM 表

转载 作者:可可西里 更新时间:2023-11-01 08:52:07 26 4
gpt4 key购买 nike

我一直在阅读 http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html努力弄清楚如何优化我所有的 MyISAM 表,但似乎无法得到它。我发现它看起来像是一个手写脚本,但我无法让它发挥作用,我宁愿真正理解它。

这是我遇到的:

for i in mysql -e 'select concat(table_schema,".,table_name) from information_schema.tables where engine="MyISAM"';做 mysql -e “优化表 $i”;完成

但是如果使用更多与文档中描述的内容类似的东西会很棒,比如 mysqloptimize --all-databases 但我绝对不希望它尝试优化我的 InnoDB表格..

有什么建议吗?

谢谢

最佳答案

您可以使用存储例程来优化表。但是,显然,这需要运行 mysql 服务。存储例程的示例如下所示。此过程中定义的游标从当前数据库(定义此 sp)中选择所有表。您可以在 WHERE 中添加用于检查 MYISAM 表的条件,例如:

DELIMITER //
CREATE PROCEDURE util_optimize_all_tables()
SQL SECURITY INVOKER
BEGIN
DECLARE endloop INT DEFAULT 0;
DECLARE tableName CHAR(100);
DECLARE rCursor CURSOR FOR SELECT `TABLE_NAME`
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA` = DATABASE() AND `ENGINE`='MyISAM';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET endloop = 1;

OPEN rCursor;
FETCH rCursor INTO tableName;

WHILE endloop = 0 DO
SET @sql = CONCAT('OPTIMIZE TABLE `', tableName, '`;');
PREPARE statement FROM @sql;
EXECUTE statement;

FETCH rCursor INTO tableName;
END WHILE;

CLOSE rCursor;
END//
DELIMITER ;

关于mysqlcheck with --optimize 但仅适用于 MyISAM 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263190/

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