相关疑难解决方法(0)

MySQL:在表之间执行大数据迁移

我想在 2 个 InnoDB 表之间迁移数据。

目前我正在运行这个查询:

INSERT INTO table_a SELECT * FROM table_b;
Run Code Online (Sandbox Code Playgroud)

如果数据集增长,避免 CPU 过载的最佳方法是什么?

谢谢

mysql innodb migration

7
推荐指数
1
解决办法
4017
查看次数

查询在一些较新的 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
查看次数

MySQL 使用过多 CPU

我现在正在学习成为一名 DBA,因为我管理着一个非常敏感的大型实时数据库。这是我的专用数据库服务器的当前系统统计信息:

  • CentOS 5.9
  • 24GB 内存
  • 8核CPU
  • 50gb FusionIO 磁盘用于 /var/lib/mysql
  • MySQL 5.5.23

    top - 18:40:27 up 14 days, 4:43, 1 user, load average: 19.72, 22.62, 24.04

    任务:总共183个,3个运行,180个睡眠,0个停止,0个僵尸

    Cpu(s): 69.9%us, 0.4%sy, 0.0%ni, 29.2%id, 0.0%wa, 0.1%hi, 0.4%si, 0.0%st

    内存:总共 24685224k,已使用 20172096k,4513128k 空闲,343420k 缓冲区

    交换:总共 2007284k,已使用 0k,可用 2007284k,缓存 729004k

    PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令

    5446 mysql 15 0 18.4g 17g 6176 R 765.8 76.2 114437:38 mysqld

我目前正在使用 50gb FusionIO 片中的 43gb。MySQL 平均大约 700 QPS 和 …

mysql innodb performance mysql-5.5 fusion-io

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

mySQL v5.6 复制的事务速度基准测试 - 似乎很慢

我正在尝试为我们的新基础架构选择最佳配置,但对结果有些困惑。

我使用 sysbench v0.5 进行测试:

准备数据

 sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua \
 --oltp-test-mode=complex --oltp-table-size=1000000 \
 --mysql-db=mydb --mysql-user=root --mysql-password=mypassword prepare
Run Code Online (Sandbox Code Playgroud)

做测试

 sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua \
 --oltp-test-mode=complex --oltp-table-size=1000000 --oltp-read-only=off \
 --num-threads=6 --max-time=60 --max-requests=0 \
 --mysql-db=mydb --mysql-user=root --mysql-password=mypassword run
Run Code Online (Sandbox Code Playgroud)

从下面的结果可以看出,主-主复制(3台机器的percona)性能最差,然后是mySQL主-从(2台机器)配置,最快的是mySQL作为单个独立服务器。

这是复制解决方案的正常情况吗?看起来太慢了,配置之间的 10 倍差异在我看来很不正常。也许我错过了一些东西......我对 Percona Galera Cluster 完全失望,它以对 innodb 的速度着称。呼:)

请检查下面提供的信息并提出建议,谢谢。

关于服务器


硬件

  • 英特尔® 至强® E5-1650 v2 六核
  • 64 GB ECC 内存
  • 2 x 240 GB 6 Gb/s SSD 数据中心版(软件-RAID 1)
  • 1 Gbit/s 带宽

操作系统

  • Debian Wheezy
  • 所有软件包都已更新/升级。

连接等

  • 服务器位于同一个数据中心,都与一个 Gbit 交换机相连,并有第二个以太网卡,所有这些都配置为它们之间的专用网络。

  • 目前,服务器上没有负载。

磁盘性能

第一次测试

# hdparm -Tt …
Run Code Online (Sandbox Code Playgroud)

mysql replication performance configuration percona

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

超线程和 MySQL InnoDB 线程并发性能

我有一个具有以下规格的专用数据库服务器”

  • Ubuntu 12.04 LTS 服务器
  • 英特尔(R) 至强(R) CPU X5670
    • @ 2.93GHz
    • 12核
  • MySQL 5.5.29
  • 64 GB 内存
  • RAID10

我们目前正在做超线程,所以我们有 24 个逻辑核心。目前在 2k-4k 事务/秒之间运行。

我已经设置了以下内容:

  • innodb_thread_concurrency = 48
  • innodb_read_io_threads = 24
  • innodb_write_io_threads = 24

这是严格的 OLTP 负载(70% 读取)。查询速度相对较快(毫秒)。查询缓存已开启但未使用过多。临时磁盘表不经常创建。InnoDB 缓冲池设置为 48GB,几乎涵盖了整个数据集(60GB 数据+索引)。

  • 事务负载将翻倍至 4k-8k 事务/秒。目前 CPU 负载约为 1000%,所以我预计这将是瓶颈。

如何更好地调整 CPU 线程以及 MySQL 如何使用这些线程?让我知道是否有人对innodb_thread_concurrency.

我将不胜感激任何建议。


更新

innodb_thread_concurrency = 48到更新后:

  • innodb_thread_concurrency = 0

在高峰时间(4-5k 事务/秒)的生产系统上查看行为,这是我观察到的:

  • 负载平均增加
  • mysqld 进程 CPU 使用率从 400% - 1000% 上升到 400% - 1400%
  • 大约 4-10 个 …

mysql innodb performance linux mysql-5.5 performance-tuning

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