mysql并行查询问题

发布于 2022-09-06 23:15:11 字数 1621 浏览 24 评论 0

业务表数据量过大分表设计4张,然后需求是将4张表全量数据导出。

测试机器4核,做法是开启4个线程同时查询,最终结果汇总。

如果一个线程查询一张表耗时 2s,那么要实现的是 4个线程跑完也是耗时 2s(利用cpu多核真正并行),但现实是耗时 2 * 4 约等于 8s多。

真的困扰多时的一个问题,还望大佬相助,跪谢!

附上mysql参数:

+-----------------------------------------+---------------------------+
| Variable_name                           | Value                     |
+-----------------------------------------+---------------------------+
| innodb_purge_threads                    | 0                         |
| innodb_read_io_threads                  | 4                         |
| innodb_thread_concurrency               | 10                        |
| innodb_thread_sleep_delay               | 10000                     |
| innodb_write_io_threads                 | 4                         |
| max_delayed_threads                     | 20                        |
| max_insert_delayed_threads              | 20                        |
| myisam_repair_threads                   | 1                         |
| performance_schema_max_thread_classes   | 50                        |
| performance_schema_max_thread_instances | 1000                      |
| pseudo_thread_id                        | 81                        |
| thread_cache_size                       | 8                         |
| thread_concurrency                      | 10                        |
| thread_handling                         | one-thread-per-connection |
| thread_stack                            | 262144                    |
+-----------------------------------------+---------------------------+

mysql 版本是 5.5.28

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原来是傀儡 2022-09-13 23:15:12

如果瓶颈在于IO,多少线程都一样啊, 除非的分表存在不同的物理磁盘上.
你需要统计一下IO情况才行.

你可以用top或iostat查看一下sql执行时的wa, IO-wait参数, 比例是多少.

IO资源方面瓶颈
出现 IO 资源方面瓶颈的时候,主要表现在服务器 iowait 很高,usr 占比较少,系统响应较慢,数据库中经常会存在大量执行状态的 session。
遇到 IO 资源方面的瓶颈,我们可以使用的硬件层面优化方案主要就是:
增加内存加大可缓存的数据量:这个方案能否达到效果取决于系统热点数据的总量,毕竟内存的成本也是比较高的,而且单台设备所能管理的内存量也是有限的
改善底层存储设备的 IO 能力:如本文前面所述,底层存储能力的改善同时取决于多个方面,既有单个磁盘本身的能力问题,也包括磁盘数目方面的策略,同时还受到存储自身以及存储和主机之间的带宽限制。所以在优化底层存储能力的同时需要同时考虑到这3方面的因素,做好总体分析和局部的平衡

牵你的手,一向走下去 2022-09-13 23:15:12

如果确实是单机IO存在瓶颈,可以考虑将表分布到几个独立的数据库,最终应用层合并数据。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文