Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我的表是否应该切换到InnoDB_Mysql_Database_Innodb_Myisam - Fatal编程技术网

Mysql 我的表是否应该切换到InnoDB

Mysql 我的表是否应该切换到InnoDB,mysql,database,innodb,myisam,Mysql,Database,Innodb,Myisam,我有一个基于PHP的API,它在共享主机上运行并使用MySQL。我一直在阅读InnoDB vs MyISAM,并希望粘贴一些关于我的API数据库的特定内容,以确保转到InnoDB是有意义的。MyISAM是为这些表默认设置的,所以我没有特意选择那个数据库引擎 我的查询写的比读的多一点(我认为70%是写的)。读取/查找总是通过一个“外键”(userid)(我知道MyISAM没有这些限制),但是如果我移动,可能会更好,因为我可以利用它 我不做全文搜索 我的数据对我来说很重要,我最近了解到MyISAM有

我有一个基于PHP的API,它在共享主机上运行并使用MySQL。我一直在阅读InnoDB vs MyISAM,并希望粘贴一些关于我的API数据库的特定内容,以确保转到InnoDB是有意义的。MyISAM是为这些表默认设置的,所以我没有特意选择那个数据库引擎

  • 我的查询写的比读的多一点(我认为70%是写的)。读取/查找总是通过一个“外键”(userid)(我知道MyISAM没有这些限制),但是如果我移动,可能会更好,因为我可以利用它
  • 我不做全文搜索
  • 我的数据对我来说很重要,我最近了解到MyISAM有丢失数据的风险?在过去的几次中,我丢失了一些数据,并认为这是我的用户在如何与API交互方面的错误。也许不是?我很困惑,为什么会有人愿意丢失数据,从而选择MyISAM,所以我可能对MyISAM了解不够
  • 我在共享主机上,他们确认我无权更改my.cnf中的设置、更改缓冲区、线程、并发设置等
  • 我将来可能会改用DigitalOcean或AWS
  • 我的托管公司使用的MySQL版本是14.14发行版:5.6.34
  • 基于这些因素,我的直觉是将所有表切换到InnoDB,至少看看是否有问题。如果遇到问题,我可以运行相同的语句,但将InnoDB与MyISAM交换以恢复


    非常感谢。

    简短回答:是的!MyISAM是MySQL的原始格式,但许多年前,InnoDB因许多原因而成为首选。在高级图片上,您的应用程序将更好地执行,因为InnoDB具有更好的锁管理

    您可以在这里找到对您的问题的更长的答案,以及以下两篇文章,内容涉及从MyISAM到InnoDB的迁移:


    非常感谢。您不会预料到问题,因为我现在无法更改配置设置并对其进行微调?除非您缩小
    键缓冲区大小
    并增加
    innodb缓冲区池大小
    ,否则您将遇到性能问题。问题可能会发生,并且更取决于您使用的列的类型。建议:进行试运行。迁移数据库,但保持MyISAM系统打开。测试新的配置,一旦确定,只需关闭以前的系统。在关闭此系统之前,不要忘记备份MyISAM。请注意,InnoDb比MyISAM更快地达到varchar/text列数的限制。