相关疑难解决方法(0)

263
推荐指数
10
解决办法
27万
查看次数

InnoDB 或 MyISAM 哪个更快?

MyISAM 如何比 InnoDB“更快”,如果

  • MyISAM 需要为数据做磁盘读取吗?
  • InnoDB 对索引和数据使用缓冲池,而 MyISAM 只用于索引?

mysql innodb myisam storage-engine

59
推荐指数
3
解决办法
13万
查看次数

从 MyISAM 转换为 InnoDB 有什么问题吗?

我已准备好从 MyISAM 迁移到 InnoDB,但想知道是否有要查找的完整列表?例如,我没有看到任何列表提到DISABLE KEYS在 InnoDB 表上运行会抛出警告,除了ALTER TABLE. 这是我在转换之前需要了解的那种事情。我以为我可以接受我的查询,但显然不是。

mysql innodb myisam

11
推荐指数
1
解决办法
6670
查看次数

表级锁定的好处

MyISAM 存储引擎使用的表级锁定有什么好处?行级锁定有很多好处,比如并发更新和不锁定表的读取。

编辑 人们普遍认为表级锁定可以防止死锁。但是,以并发为代价来防止死锁如何值得呢?

mysql myisam deadlock locking

7
推荐指数
2
解决办法
7738
查看次数

具有许多索引的 InnoDB 与 MyISAM

我不确定这个问题的答案是对还是错,因为我认为这在很大程度上取决于情况,但为了心理锻炼,我还是继续问吧:

我的数据库中有一个 MyISAM 表,它位于我的站点的中心。围绕它创建了许多参考表,还有许多其他表直接链接到该表中的行 ID。该表大约有 260k 行,有 28 个字段,其中大部分是 varchars 和 ints。我有大约 15 个索引(数据大约 70 MiB,索引大约 80 MiB)。每天可能有数百次写入,而读取数以万计。我的数据库位于 SSD 驱动器上。

现在我的问题是;将此表更改为 InnoDB 表是否有益?我正在努力扩展我的系统以包括 API 流量,这意味着该表甚至会被查询更多,我想确保一切运行尽可能顺利。因此,我有点倾向于将其转换为 InnoDB。但是,由于该表需要许多索引,我认为 MyISAM 可能会更有效地工作。谁能帮我下定决心?提前致谢1

编辑:(由 jcolebrand 从评论中添加)

我很久以前就添加了索引,并且我对 PHP 代码库进行了一些更改,因此可能有些索引已经过时,但总体而言;是的,它们都被使用了。我在表上运行了许多不同类型的查询。不同的查询,不同的索引。但是我在这里的主要问题不涉及表读取性能,而是它如何处理许多索引。InnoDB 索引与数据一起“离开”/存储,而不是 MyISAM 的密钥文件原则。我只是担心这可能会导致足够的性能下降不会超过表锁定问题。

mysql innodb myisam index

6
推荐指数
1
解决办法
7621
查看次数

我应该使用 MyISAM 以外的存储引擎来优化这些表还是应该获得更好的磁盘?

我正在开发一个生产数据库,它的 4 个最大的表每个包含 400 万到 1000 万行,每个包含大约 15 个字段,并在不同的字段类型(数字、varchar 和文本)上有索引。总index_length容量为 2.2GB,总容量data_length为 6GB。所有这些表都使用 MyISAM,它们的读/写比为 66/33。

这是空闲时间 /etc/init.d/mysql status 的输出:

Server version          5.1.37-1ubuntu5
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
...

Threads: 27  Questions: 5430994  Slow queries: 59  Opens: 298  Flush tables: 1  Open tables: 128  Queries per second avg: 182.695
Run Code Online (Sandbox Code Playgroud)

在高峰时段,每秒的查询数约为 300。

在过去的几周里,数据库变得如此缓慢,有时查询会锁定 2 分钟以上。所以,我增加到key_buffer_size4GB(我机器上有 8GB)。锁定时间减少了。但是在高峰时段还是难以忍受,尤其是读写比接近50/50的时候。

服务器在虚拟环境中运行,因此 I/O 不是很好,并且大多数选择查询ORDER BY <some_indexed_field>在平均 50k 行的结果集上执行。

之前我已经成功地调整了这个数据库,但现在它仍然较小,但现在我被卡住了。

更新: 白天磁盘利用率很容易达到 100%。

mysql myisam database-tuning

5
推荐指数
1
解决办法
1138
查看次数