MySQL Server只会在单个前台线程中执行每个查询,SQL 端不支持多线程执行。它还执行维护操作,例如可以在单个线程中重建整个表的 ALTER TABLE。
然而,像InnoDB这样的引擎,特别是在最近的版本中,能够并发地执行其后台线程,这意味着某些 IO 操作(如刷新数据、预缓存和数据清除)可以同时发生,MySQL 供应商的一些“实验室”基准测试表明它可以在高压力下扩展到 64 个内核。
话虽如此,请理解,在大多数情况下,像 MySQL 这样的数据库不是 CPU-bound,而是 IO-bound,这意味着导致延迟瓶颈的不是 CPU 能力,而是读写延迟和二级存储的吞吐量。在某些情况下,您可能会受到 CPU 限制,例如,在某些特殊情况下,在 FusionIO 设备中执行某些校验和时,如果您需要 SSL/其他类型的加密,如果您在 SQL 级别执行复杂的数学运算,或应用可以专门在内存上完成的行过滤器。
如果您过去遇到过 CPU 峰值,或者 CPU 使用率一直很高,这可能会有所帮助,但前提是您可以并行化查询计算:它不会使单个查询的 ALTER TABLES 或 SQL 解析速度更快。再加上我们许多人在使用 MySQL 时推荐的“轻量级”方法(试图避免 MySQL 端的业务逻辑 - 存储过程),使得我之前提到的实验室基准测试难以在现实中重现。使用额外的并发有时需要最新版本的 MySQL 和配置更改。一般来说,对于 MySQL 来说,投资更强大的内核比其中的许多内核要好得多。
归档时间: |
|
查看次数: |
3535 次 |
最近记录: |