- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 48 个表的数据库,其中 45 个表是 InnoDB。
我有 3 个 MyISAM 表,大小从 200 条记录到 150 万条记录不等,还有 650 万条记录。
这 3 个表包含 GEO 位置信息并且是只读的(从不写入 - 除非我要更新一个 - 极少)。
我考虑将它们更改为 InnoDB 以使数据库 100% 相同,但后来读取 MYiSAM 更快。注意:我不需要任何特殊的 INNODB 函数——它只是选择/连接……就是这样。
我应该保留这些 MyISAM 还是将它们更改为 InnoDB?
谢谢
最佳答案
MyISAM 几年前速度更快,但如果您使用任何当前版本的 InnoDB,那么 InnoDB 对于大多数工作负载来说速度更快。这是 2007 年的一次性能比较,显示 InnoDB 在除了少数类型的查询之外的所有查询中已经匹配或优于 MyISAM。
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/
自 2007 年的那次测试以来,InnoDB 不断变得更好,而 MySQL 开发人员几乎没有花时间改进 MyISAM。它死了,吉姆。
MyISAM 可能更快的唯一情况是在进行全表扫描时,无论如何你应该尝试定义索引以避免表扫描。
自 5.5(大约 2010 年)以来,InnoDB 一直是 MySQL 中的默认存储引擎。随着 MySQL 的每个主要版本,MyISAM 的消失变得更加明显。
即使您不使用事务或外键等显式功能,InnoDB 也有很多好处。试试这个:
InnoDB 支持原子 更改,因此每个 SQL 语句要么完全成功,要么回滚。您不会得到部分完成的更改。
InnoDB 还支持崩溃恢复,因此即使 mysqld 崩溃,您也不会丢失数据。 MyISAM 以在崩溃期间损坏表而闻名。
InnoDB 还在 RAM(InnoDB 缓冲池)中缓存数据,而 MyISAM 依靠文件系统缓存来加速数据 I/O。如果您有足够的 RAM,这会使 InnoDB 中的某些查询更快。
仅当您不关心数据时才使用 MyISAM。
关于MySQL - InnoDB 或 MyISAM - 只读表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236542/
我有一个包含 21 个表的 mysql 数据库,所有表都有关系设置,我在 phpMyAdmin 中与设计师一起制作了它们。我很困惑,因为 MyISAM 不支持关系。除非有我找不到的更新。 是否有更新使
我有一个包含 MyISAM 和 InnoDB 表的 MyISAM 数据库,我想将此数据库迁移到另一台服务器,对于 MyISAM,只需复制 .frm .MYI 和 .MYD 即可,但对于 InnoDB
一:MySQL中MyISAM表损坏原因总结: 1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。 2、 磁盘损坏。 3、 服务器死机。
我必须维护一个使用 MyISAM 引擎的 MySQL 数据库。现在数据库太大,每天备份占用空间很大。 我从数据库中删除了数百万条记录,但数据库大小没有减少,备份文件大小更大。 我应该使用 OPTIMI
我正在测试 innoDB 表中的事务支持,出于好奇,我尝试在 MyIsam 表上运行相同的事务,令人惊讶的是它成功了。我假设在 myIsam 表上查询是一个接一个地执行,而不是在一个原子操作中执行,并
各位 我需要从表A(大约6000万条记录和myisam存储引擎)生成一个报告。表 A 每 15 分钟转储一次 cdr 文件。 我想根据(日期至)和(日期自)生成报告 我尝试过的几个场景如下 1)我尝试
我在 Windows Server 2008(具有 4GB RAM)上使用 MySQL 5.1,并具有以下配置: 我有 2 个 MyISAM 表。其中一个位于 1 个数据库 (DB1) 中,有 14
我试图在 MariaDB10.0.14 上执行基准测试,以使用多个线程读取 MyISAM 表上的数据,但我不断收到与主键重复条目有关的异常。 MyISAM支持多线程读取吗?我使用sysbench进行基
我有一台具有 4GB RAM 和 400MB Mysql 数据库 (Myisam) 的单处理器专用服务器,该服务器存在很大的性能问题。该数据库由电子商务使用。我已经尝试使用 mysqltuner 脚本
多线程如何与 MyISAM 配合使用。因为它支持表级锁定?如果我们要求从同一张表中选择。线程在这种情况下如何工作 最佳答案 单独的连接获得单独的线程。单个连接不会使用多个线程。 (MyISAM 和 I
我有以下 2 个相同的表,使用 MySQL: DROP TABLE IF EXISTS `DB`.`tblNew`; CREATE TABLE `DB`.`tblNew` ( `NumberPK`
我可能忽略了一些简单的事情,但几周来我一直在试图了解这里出了什么问题,我需要一双新的眼睛。 我有一个处理 Paypal 付款通知的 CGI 应用程序。当有人订阅时,我实际上会获得一个订阅 IPN,然后
表不断崩溃错误 126 (HY000):表 './DB/Table.MYI' 的 key 文件不正确;尝试修复它 它确实通过修复表修复了,但问题再次出现!而且它的 5G 表需要约 45 分钟才能修复。
我可以使用在 MySQL 5.1.30 上运行的 MyISAM 表创建表空间吗? 最佳答案 表空间(在 MySQL 5.1 中)仅支持 NDB 和 NDBCLUSTER,参见 http://dev.m
基本上,我有一个 lang 表,其中包含 pg VARCHAR(20),id VARCHAR(20),en ( TEXT),ru (TEXT) 用于我的网站的多语言支持,在 99.999% 的情况下,
我的在线拍卖网站已经运行了近 3 年,并且仍然运行良好。三年内,如此多的拍卖已在服务器上列出并完成。但现在有很多负载在服务器上,因为数据库服务器上有很多已完成的现场拍卖。因此网站的性能不再是以前的样子
在 Mysql(5.7 及以上版本)中,用于表的更改跟踪,this approach实现起来非常简单。 但它需要版本表是 MyISAM,它执行表级锁定。 这种方法对于每秒发生多次插入/更新的生产系统是
假设我在 MyISAM 表上进行了一些操作(让它成为 INSERT),并附加了触发器。 我知道 MySQL 在运行此 INSERT 时会执行隐式表锁定。 问题:触发器会在这个隐式锁内部运行吗?触发器中
我有两个表,t1 和 t2,每个表有两列 - id_user 和 age。 如何将 t1.age 更新为 t1.age 和 t2.age 中的最大值以匹配 ID,并保留 t1.age 如果 t2 中没
我有一张测试表。测试表如下: CREATE TABLE `mytest` ( `num1` int(10) unsigned NOT NULL, KEY `key1` (`num1`) )
我是一名优秀的程序员,十分优秀!