如何将现有数据库的 "innodb_file_per_table" 参数从 "OFF" 更改为“1”?
How can I change the "innodb_file_per_table" parameter from "OFF" to "1" for an existing database?
从 MyISAM 切换到 InnoBD 时,我使用了默认设置。看完优化提示后,我意识到每个 table 最好放在一个单独的文件中。如何将 table 从一个文件传输到每个 table 模式的单独文件?
如果您正在使用 MariaDB 10.x,innodb_file_per_table=1
是那里的默认设置,所以只要您使用默认设置,您的新 InnoDB 表和从 MyISAM 转换为 InnoDB 的表将已经有单独的表空间。
如果您使用的是 MariaDB 5.5,默认情况下 innodb_file_per_table=0
。要开始使用单独的表空间,运行 SET GLOBAL innodb_file_per_table = 1;
。从那时起直到服务器重新启动,所有新创建和更改的 InnoDB 表都将使用此选项。要使该选项永久生效,请将其添加到 cnf 文件中。
要将现有的 InnoDB 表转换为单独的表空间,您可以 运行
ALTER TABLE <tablename> ENGINE=InnoDB
或 ALTER TABLE <tablename> FORCE
.
关于转换的更多提示:http://mysql.rjweb.org/doc.php/myisam2innodb
您可能必须这样做:
SET GLOBAL innodb_file_per_table = 1;
ALTER ...
我更喜欢大表 file_per_table,但 ibdata1 中的小表。
从 MyISAM 切换到 InnoBD 时,我使用了默认设置。看完优化提示后,我意识到每个 table 最好放在一个单独的文件中。如何将 table 从一个文件传输到每个 table 模式的单独文件?
如果您正在使用 MariaDB 10.x,innodb_file_per_table=1
是那里的默认设置,所以只要您使用默认设置,您的新 InnoDB 表和从 MyISAM 转换为 InnoDB 的表将已经有单独的表空间。
如果您使用的是 MariaDB 5.5,默认情况下 innodb_file_per_table=0
。要开始使用单独的表空间,运行 SET GLOBAL innodb_file_per_table = 1;
。从那时起直到服务器重新启动,所有新创建和更改的 InnoDB 表都将使用此选项。要使该选项永久生效,请将其添加到 cnf 文件中。
要将现有的 InnoDB 表转换为单独的表空间,您可以 运行
ALTER TABLE <tablename> ENGINE=InnoDB
或 ALTER TABLE <tablename> FORCE
.
关于转换的更多提示:http://mysql.rjweb.org/doc.php/myisam2innodb
您可能必须这样做:
SET GLOBAL innodb_file_per_table = 1;
ALTER ...
我更喜欢大表 file_per_table,但 ibdata1 中的小表。