相关疑难解决方法(0)

InnoDB 或 MyISAM 哪个更快?

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

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

mysql innodb myisam storage-engine

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

经常查询10万条记录的MySQL表

我有一个大约 100 个表的数据库来存储各种信息。

最重要的表是我们的订单表,用于存储客户订单,截至目前已超过 100000 条记录,并且还在不断增长。

该表是我们数据库中查询最多的表,用于获取实时订单仪表板、统计数据、分析等所需的各个部分信息。

我定期监视数据库,并在数据库上启用慢速查询以跟踪问题。

我每天都使用像 mysqltuner 这样的脚本来输出查询。

我还使用 mysqlsla 收集有关我们数据库中前 10 个最慢查询的信息。

sample stat
Count         : 11.48k  (30.66%)
Time          : 19.623758 s total, 1.709 ms avg, 239 µs to 2.475017 s max  (18.64%)
  95% of Time : 5.246833 s total, 481 µs avg, 239 µs to 1.095 ms max
Lock Time (s) : 14.460071 s total, 1.259 ms avg, 53 µs to 2.462555 s max  (41.38%)
  95% of Lock : 806.43 ms total, 74 µs avg, …
Run Code Online (Sandbox Code Playgroud)

mysql myisam mysql-5.5

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

具有许多索引的 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
查看次数

为只读优化 MySQL?

我们有 14 GB 的 CSV,总计 1.38 亿行。我首先使用 InnoDB 将其导入到 MySQL 表中,然后使用 MyISAM 再次尝试。在这两种情况下,对主键(只是一个自动递增的 int)的简单 SELECT 需要 6-7 秒,尽管 MyISAM 有时在 5-6 秒时快一点。

我们只需要写一次数据,我一直在使用mysqlimport。考虑到这一点,如何提高查询速度?

...我们有 2 演出 RAM 并且一切都是一张表,这毫无价值(并且由于查询的性质,它必须保持这种状态)。考虑到硬件,这是我可以期待的最佳性能吗?或者还有什么我应该尝试的,比如压缩?或者真的,我需要更多的内存?

mysql innodb myisam optimization hardware

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

MySQL中小型查找表的最佳引擎

我有以下问题:我正在设计带有几十个小型查找表的 Web 应用程序:这些表通常包含三列(ID、名称、描述)和几行(大多数少于 50,最大约为 450)。

这些查找表预计很少更改(它们来自标准,几年更改一次)并且仅用于:

  • html select 中的填充选项
  • 加入报告中的其他记录

SELECT99% 的情况下,这些表上只会有语句,但会有相当多的语句。

我想知道,使用哪种数据库引擎最有效?

以下是我的考虑:

记忆

  • 亲:非常快
  • con:如果服务器崩溃,所有数据都丢失,需要重新创建
  • con:不支持外键

压缩的 MyISAM

  • 亲:快
  • con:不支持外键

数据库

  • 亲:外键支持

我想问的是,使用与InnoDB不同的东西是否会有显着的优势- 性能方面

谢谢,兹比内克

mysql innodb myisam storage-engine database-recommendation

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

HandlerSocket 的用例是什么?

周围有一些炒作:HandlerSocket

似乎更快,nosql 访问 MySQL 数据变得越来越可取。Percona Server 现在内置了 HandlerSocket。

我的问题是,绕过 MySQL 的 libmysqld 层以利用 HandlerSocket 插件的生产用例是什么?您是否将其部署到生产环境中?

mysql innodb nosql

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

MyISAM 的 MySQL 性能调优

我需要对 mysql 服务器进行性能调整并需要帮助。

我有一个专用于 MySQL 的 16G 服务器,其中有 1 个 MyISAM 表,其中大约有 200 万行,可以获取大量流量。同一个数据库上还有大约 100 个其他 innodb 表。MyISAM 表几乎是只读的,用户使用它进行搜索。

服务器的 max_connection 值为 800,在大约 300 个并发用户的负载测试下,查询时间开始显着增加。在没有负载的情况下,查询需要大约 500 毫秒才能运行。

目标是显着提高 MyISAM 表上的搜索性能。

表的大小(以 MB 为单位):

data_size   index_size  total           engine
8991        6920        15911           InnoDB
1110        718         1829            MyISAM
Run Code Online (Sandbox Code Playgroud)

以下是我的设置:

connect_timeout 10
innodb_additional_mem_pool_size 24117248
innodb_buffer_pool_size 12G
innodb_commit_concurrency   0
innodb_flush_log_at_trx_commit  1
innodb_log_buffer_size  11534336
innodb_log_file_size    449839104
innodb_open_files   300
innodb_thread_concurrency   8
innodb_thread_sleep_delay   10000
join_buffer_size    131072

key_buffer_size 2147483648
key_cache_age_threshold 300
key_cache_block_size    1024
key_cache_division_limit    100


max_allowed_packet  134217728
max_connections 800 …
Run Code Online (Sandbox Code Playgroud)

mysql myisam performance

4
推荐指数
1
解决办法
2万
查看次数