首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyISAM vs Innodb和Innodb相关表格

MyISAM vs Innodb和Innodb相关表格
EN

Stack Overflow用户
提问于 2012-05-07 05:20:25
回答 3查看 544关注 0票数 2

我正在创建的应用程序主要使用选择,但也有一些是插入、更新等。我想知道在这些情况下哪一个是最好的性能。

其次,当我在innodb中有两个相关的表时,如何删除与另一个表中的行相关的行,而不会产生错误?

最后,如果我插入到一个表中,它会自动填充相关表的外键,还是让我在中进行编程?

这个应用程序是用PHP编写的。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-07 05:27:10

历史上纯粹基于性能的MyISAM (had?)超越InnoDB的优势。

但考虑到MyISAM并不完全支持引用完整性约束和事务,并且使用/使用表级锁定,我肯定会选择InnoDB。你在这里冒的是数据完整性的风险,在我看来,你需要一个特殊的场景来保证对MyISAM的需求。

关于你的问题,考虑相关的表格:只需给your foreign key constraints想要的cascade选项。

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 05:27:26

我正在创建的应用程序主要使用选择,但也有一些是插入、更新等。我想知道在这些情况下哪一个是最好的性能。

更重要的问题是:如果你的数据被破坏了,这很重要吗?如果是这样的话,您需要事务,这意味着MyISAM退出了。然后你可以开始关心性能,因为只有到那时,你才能实现第一个也是最重要的性能改进:应用程序从不工作到工作。

其次,当我在innodb中有两个相关的表时,如何删除与另一个表中的行相关的行,而不会产生错误?

要么先删除相关行,要么使用ON DELETE CASCADE定义foreign key约束-然后自动删除相关行;这是一个危险的特性。

,最后,如果我插入到一个表中,它是否会自动填充相关表的外键,或者我是否需要对此进行编程?

不是,而且是。这不是魔术-应用程序如何知道其他列应该包含什么,或者您是否真的想要一个条目?

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 06:17:54

主要使用selects,但也有一些是插入、更新

视情况而定。写入的读取量是多少? 80%?90%?95%?写入是与读取交错还是成批执行?数据库上的并发访问级别是什么?是否有写入繁重的特定表?

MyISAM的读操作速度要快得多,但由于它会锁定整个表进行写操作,因此与Innodb相比,整体吞吐量会有所下降。

对于具有隔夜ETL的数据仓库,MyISAM同样具有净性能优势。对于非事务性的内容管理系统(想一想简单的发布工具),MyISAM可能更快。对于一个典型的基于web的商店,你会期望看到超过95%的读取,写入将主要隔离到特定的表,并且一次更新几行-在这里,它有点边缘,最好的解决方案可能是混合方法。对于具有频繁更新和大量并发访问(例如,用于存储会话数据)的数据库来说,innodb是可行的方法。

当我在innodb中有两个相关的表时,如果一行与另一个表中的一行相关,我如何删除它而不会产生错误?

使用innodb并声明foreign key constraints

如果我插入到一个表中,它会自动填充相关表的外键吗

mysql如何知道应该将哪些数据放入表中?要添加多少行?你需要自己来做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10474405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档