相关疑难解决方法(0)

可以让 MySQL 使用多个核心吗?

我已经看到一些专用的 MySQL 服务器,它们只使用一个内核。我比 MySQL 的 DBA 更擅长开发,所以需要一些帮助

设置

服务器非常庞大,具有 OLAP/DataWarehouse (DW) 类型的负载:

  • 主要:96GB RAM,8 核 + 单个 RAID 10 阵列
  • 测试:32GB RAM,4核
  • 最大的 DB 是 540 GB,总共大约 1.1TB,主要是 InnoDB 表
  • Solaris 10 Intel-64
  • MySQL 5.5.x

注意:最大的 DB 是从 OLTP DR 服务器复制的 DB,DW 就是从这里加载的。它不是完整的 DW:仅持续 6 个月到 6 周,因此它比 OLTP DB 小。

对测试服务器的观察

  • 3 个独立的连接
  • 每个都有一个并发的(和不同的) ALTER TABLE...DROP KEY...ADD INDEX
  • 这 3 个表有 2.5、3.8 和 450 万行
  • CPU 使用率上升到 25%(一个核心被最大化)并且不会更高
  • 3 次 ALTER 需要 12-25 分钟(最小的一次需要 4.5 分钟)

问题

  1. 需要什么设置或补丁才能允许使用多个内核?
    也就是说,为什么 …

mysql innodb performance tuning mysql-5.5

140
推荐指数
5
解决办法
22万
查看次数

关于单线程与多线程数据库性能

H2 是一个单线程数据库,在性能方面享有盛誉。其他数据库是多线程的。

我的问题是:多线程数据库什么时候变得比单线程数据库更有趣?有多少用户?多少个进程?什么是触发器?有人有经验可以分享吗?

概括

  • 通常的瓶颈是磁盘访问
  • SSD 速度很快,但很脆弱(必须执行故障程序)
  • 单线程系统上的一个长查询将阻塞所有其他查询
  • 配置多线程系统可能很棘手
  • 即使在单核系统上,多线程数据库也是有益的

performance database-recommendation

63
推荐指数
5
解决办法
8万
查看次数

多核和 MySQL 性能

RAM 的重要性是一个既定的事实,但在 MySQL 使用 CPU 时,关于内核和多线程重要性的资料要少得多。我说的是在 4cores vs 6cores vs 8cores 上运行 MySQL 的区别等等。

不同的存储引擎使用 CPU 的方式不同吗?

mysql performance

38
推荐指数
2
解决办法
6万
查看次数

CPU 性能与数据库服务器相关吗?

这是一个纯理论问题。假设我在多台服务器上部署了一个应用程序。

  1. 负载均衡器,
  2. 多个/可扩展的应用程序服务器
  3. 一个(单一的)数据库服务器(目前)

在前两个部分,我知道要寻找什么。但是数据库服务器呢?我应该寻找什么样的硬件?

  • CPU 频率与数据库服务器相关吗?
  • 多核 CPU 是否相关?
  • RAM比CPU重要吗?

PS:假设选择的数据库是 MySQL 或 PostgreSQL。

mysql postgresql performance

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

如何正确执行 MySQL 烘焙?

我想针对其他一些分支(例如 Percona 服务器、MariaDB 以及可能的其他分支)对 MySQL 服务器 rpm 进行性能测试(又名烘焙)。我希望通过提出这个问题,我可以更好地理解设置适当性能测试背后的方法。我计划使用 sysbench 来运行我的实际测试,但我对任何事情都持开放态度。

  1. 我应该采取哪些步骤来确保测试结果在一个苹果对苹果的比较中并且只有 RDBMS 是变体?
  2. 我从哪里开始?
  3. 我如何评估结果?
  4. 你能给我什么建议?

mysql mariadb performance percona performance-testing

27
推荐指数
2
解决办法
9534
查看次数

Percona 与 MySQL

什么是 Percona?

它与 MySQL 有何不同?

我们什么时候应该考虑从库存 MySQL 切换(或升级)到 Percona?

为了在我们的情况下添加一些细节,我们几乎只使用具有广泛外键约束和一些存储过程的 InnoDB(我知道 Percona 已经做了很多优化)。

我们目前发现 MySQL 对我们的查询优化不佳,因此任何超过 3-4 个连接的查询我们都必须使用 STRAIGHT 连接显式构建以提高性能。

mysql innodb performance percona percona-server

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

在 Debian 上使用多个内核进行单个 MySQL 查询

我正在运行 MySQL 服务器,以在 Debian 作为来宾操作系统的 VM (VMWare) 上进行测试。来宾有四个模拟 CPU 内核,因此我将 thread_concurrency 设置为四个。

我在大型表上执行昂贵的连接,这可能需要几分钟,但我在来宾操作系统上看到,一次只使用一个核心。无论用于所涉及的表的存储引擎如何(使用 MyISAM 和 InnoDB 测试),都会发生这种情况。此外,在执行这些大型查询时,整个数据库似乎都被阻塞了,我无法并行执行任何其他查询。奇怪的是 htop 显示,用于查询的核心在查询运行时发生了变化!

为什么会发生这种情况?

这是来自SHOW FULL PROCESSLIST;(没有其他查询)的相关条目:

| 153 | root       | localhost | pulse_stocks  | Query   |   50 | Copying to tmp table | 
SELECT DISTINCT * FROM 
`pulse_stocks`.`stocks` sto,
`pulse_new`.`security` sec
WHERE
(sto.excntry = sec.excntry AND sto.stock_id = sec.ibtic) OR
( sto.isin = sec.isin AND sto.isin <> "" AND sec.isin <> "" )
ORDER BY
sto.id
LIMIT 0, 30 
Run Code Online (Sandbox Code Playgroud)

没有其他待处理的查询。另一个有趣的观察是,如果我省略这 …

mysql innodb myisam concurrency parallelism

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

为什么 mysql 5.5 比 5.1 慢(linux,使用 mysqlslap)

my.cnf(5.5 和 5.1 是一样的):

back_log=200
max_connections=512
max_connect_errors=999999
key_buffer=512M
max_allowed_packet=8M
table_cache=512
sort_buffer=8M
read_buffer_size=8M
thread_cache=8
thread_concurrency=4
myisam_sort_buffer_size=128M
interactive_timeout=28800
wait_timeout=7200
Run Code Online (Sandbox Code Playgroud)

mysql 5.5:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 15.156 seconds
        Minimum number of seconds to run all queries: 15.031 seconds
        Maximum number of seconds to run all queries: 15.296 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500
Run Code Online (Sandbox Code Playgroud)

mysql5.1:

..mysql5.5/bin/mysqlslap -a --concurrency=10 …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-5.5 mysql-5.1

10
推荐指数
1
解决办法
8270
查看次数

查询在一些较新的 MySQL 版本中运行时间较长

我在 MySQL 5.0.15 上创建了一个数据库。我有一个查询,当我在这个 MySQL 版本上运行这个查询时,我得到 0.9 秒的运行时间。当我将此数据库导入到另一个具有相同硬件的 MySQL 服务器并运行相同的查询时,我得到了 120 多个,有时 MySQL 挂起。

5.0 和 5.1 或 5.5 有什么区别?我已经测试了 5.1 和 5.5 版本。

在较新版本中查询是否可能需要更长的时间(例如 mysql 结构更改)?

对不起,我不能把这个查询放在这里,但查询是这样的:

SELECT fl_passenger_ticket. *, 
       fl_aganc.name                             AS agancname, 
       fl_pnr.remark                             AS remark, 
       fl_pnr.reservetime                        AS reservetime, 
       fl_pnr.cancelpnr, 
       fl_flight_date.fromcity                   AS fromcity, 
       fl_flight_date.tocity                     AS tocity, 
       fl_flight_date.flightdate                 AS flightdate, 
       fl_flightdate_capacity.adultper           AS adultper, 
       fl_flightdate_capacity.childper           AS childper, 
       fl_flightdate_capacity.infantper          AS infantper, 
       fl_flightdate_capacity.cancel             AS cancelsegment, 
       fl_flightdate_capacity.tax1adultpric, 
       fl_flightdate_capacity.tax1childpric, 
       fl_flightdate_capacity.tax1infantpric, 
       fl_flightdate_capacity.tax2adultpric, 
       fl_flightdate_capacity.tax2childpric, 
       fl_flightdate_capacity.tax2infantpric, 
       ( fl_flightdate_capacity.tax3adultpric + 
         fl_flightdate_capacity.tax4adultpric + 
         fl_flightdate_capacity.tax5adultpric )  AS taxxtadultpric, 
       ( fl_flightdate_capacity.tax3childpric + …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.5 mysql-5.1 mysql-5.0

6
推荐指数
2
解决办法
9670
查看次数

我应该使用 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
查看次数

我有 16GB 的内存,我应该如何配置 MySQL 服务器?

我有一台带有多个 CPU 和 16GB RAM 的专用生产服务器。

如何配置它以利用服务器资源以获得更好的性能?网站流量不断增加,MySQL 开始使用大量 CPU。

这是我当前的MySQL 服务器配置

我还计划优化数据库,并检查查询以改善缓慢的查询。

mysql memory configuration

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