【发布时间】:2018-05-04 01:19:08
【问题描述】:
您好,我有一个 SQL 备份文件,我注意到我的 Mysql 服务器在导入或创建新表时默认配置为使用 utf8 和 innodb。
当我在每个表的 sql 文件中安装脚本时,引擎被指定为 myisam 和 charset latin。 所以来自 cms 的基本表是 latin1 和 myisam 格式的。
现在我安装了一些插件和表,插件导入为 innodb 和 utf8。
我现在在我的备份文件中手动将引擎和字符集从 innodb/utf8 更改为 myisam/latin1 并重新导入。
导入是可能的,没有任何问题,似乎一切正常,但问题是:
我可以在没有任何问题的情况下将“Engine=Innodb”替换为“Engine=MyIsam”吗?
【问题讨论】:
-
不会出现数据完整性问题。但是,在查询方面,这两个引擎的工作方式非常不同。事务、行锁定、崩溃恢复等东西在 InnoDB 中都更好,你真的应该使用它。 dba.stackexchange.com/questions/1/…
-
感谢您提供可以将 innodb 表转换为 myisam 的信息。现在我很平静。 :)
-
我没说没关系。我说数据至少应该结转。在 2017 年,您想要 MyISAM 的场景非常少。
-
数据结转 = 它(脚本)有效,对吗?我知道 innodb 可能更好,但该脚本是为旧的 php mysql 版本设计的,最初我只是在本地使用它。
-
不,脚本不一定能正常工作。例如,InnoDB 没有
FULLTEXT索引,因此如果您的应用程序依赖于一个会损坏的索引。如果您的应用程序需要事务,将所有内容切换到 MyISAM 会破坏这一点。由于 MyISAM 的糟糕锁定,您可能会看到糟糕的性能。
标签: mysql utf-8 innodb myisam iso-8859-1