我应该为我的表切换到 InnoDB 吗?
Should I switch to InnoDB for my tables
我有一个基于 PHP 的 API 运行 在共享主机上并使用 MySQL。我一直在阅读 InnoDB 与 MyISAM 的对比,并想粘贴一些关于我的 API 数据库的具体内容,以确保继续使用 InnoDB 是有意义的。这些表默认设置了 MyISAM,所以我没有刻意选择那个数据库引擎。
- 我的查询写入次数多于读取次数(我想是 70% 的写入次数)。 Reads/lookups 总是由 "foreign key"(用户标识)(我知道 MyISAM 没有这些限制)但可能很高兴知道我是否移动,因为我可以利用它。
- 我不进行全文搜索
- 我的数据对我很重要,我最近了解到 MyISAM 有丢失数据的风险?过去有几次我丢失了一些数据,并假设这是我的用户与 API 交互方式的错误。也许不是?我很困惑为什么有人会接受丢失数据并因此选择 MyISAM,所以也许我对 MyISAM 的了解不够。
- 我在共享主机上,他们确认我无权更改 my.cnf 中的设置、更改缓冲区、线程、并发设置等
- 我以后可能会改用DigitalOcean或AWS
- 我的托管公司使用 MySQL 版本是 14.14 分发:5.6.34
基于这些因素,我的直觉是将我所有的表都切换到 InnoDB,至少看看是否有问题。如果遇到问题,我可以 运行 相同的语句,但将 InnoDB 与 MyISAM 交换以恢复原状。
非常感谢。
简短回答:是的! MyISAM 是 MySQL 的原始格式,但很多年前 InnoDB 已被首选,原因有很多。在高级图片上,您的应用程序将更好地执行,因为 InnoDB 具有更好的锁管理。
您可以在此处找到对您的问题的更长回答 以及以下 2 篇有关从 MyISAM 迁移到 InnoDB 的文章:
https://dba.stackexchange.com/questions/167842/can-converting-myisam-to-innodb-cause-problems
我有一个基于 PHP 的 API 运行 在共享主机上并使用 MySQL。我一直在阅读 InnoDB 与 MyISAM 的对比,并想粘贴一些关于我的 API 数据库的具体内容,以确保继续使用 InnoDB 是有意义的。这些表默认设置了 MyISAM,所以我没有刻意选择那个数据库引擎。
- 我的查询写入次数多于读取次数(我想是 70% 的写入次数)。 Reads/lookups 总是由 "foreign key"(用户标识)(我知道 MyISAM 没有这些限制)但可能很高兴知道我是否移动,因为我可以利用它。
- 我不进行全文搜索
- 我的数据对我很重要,我最近了解到 MyISAM 有丢失数据的风险?过去有几次我丢失了一些数据,并假设这是我的用户与 API 交互方式的错误。也许不是?我很困惑为什么有人会接受丢失数据并因此选择 MyISAM,所以也许我对 MyISAM 的了解不够。
- 我在共享主机上,他们确认我无权更改 my.cnf 中的设置、更改缓冲区、线程、并发设置等
- 我以后可能会改用DigitalOcean或AWS
- 我的托管公司使用 MySQL 版本是 14.14 分发:5.6.34
基于这些因素,我的直觉是将我所有的表都切换到 InnoDB,至少看看是否有问题。如果遇到问题,我可以 运行 相同的语句,但将 InnoDB 与 MyISAM 交换以恢复原状。
非常感谢。
简短回答:是的! MyISAM 是 MySQL 的原始格式,但很多年前 InnoDB 已被首选,原因有很多。在高级图片上,您的应用程序将更好地执行,因为 InnoDB 具有更好的锁管理。
您可以在此处找到对您的问题的更长回答
https://dba.stackexchange.com/questions/167842/can-converting-myisam-to-innodb-cause-problems