我有一个数据库,由于一些问题,我需要将一些表从 MyISAM 转换为 InnoDB。
我基本上是这样做的:
set sql_log_bin = 0;
set sql_mode = 'STRICT_ALL_TABLES';
ALTER TABLE `table1` ENGINE = INNODB;
ALTER TABLE `table2` ENGINE = INNODB;
ALTER TABLE `table3` ENGINE = INNODB;
ALTER TABLE `table4` ENGINE = INNODB;
ALTER TABLE `table5` ENGINE = INNODB;
ALTER TABLE `table6` ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
它工作正常,但据我所知,我现在应该重新配置 my.cnf 然后重新启动 mysql 服务器,对吗?
如果服务器同时包含 MyISAM 和 InnoDB 表,我应该如何调整 my.cnf 文件?
我有一台带有多个 CPU 和 16GB RAM 的专用生产服务器。
如何配置它以利用服务器资源以获得更好的性能?网站流量不断增加,MySQL 开始使用大量 CPU。
这是我当前的MySQL 服务器配置。
我还计划优化数据库,并检查查询以改善缓慢的查询。
我有一个具有以下规格的专用数据库服务器”
我们目前正在做超线程,所以我们有 24 个逻辑核心。目前在 2k-4k 事务/秒之间运行。
我已经设置了以下内容:
innodb_thread_concurrency = 48innodb_read_io_threads = 24innodb_write_io_threads = 24 这是严格的 OLTP 负载(70% 读取)。查询速度相对较快(毫秒)。查询缓存已开启但未使用过多。临时磁盘表不经常创建。InnoDB 缓冲池设置为 48GB,几乎涵盖了整个数据集(60GB 数据+索引)。
如何更好地调整 CPU 线程以及 MySQL 如何使用这些线程?让我知道是否有人对innodb_thread_concurrency.
我将不胜感激任何建议。
更新
从innodb_thread_concurrency = 48到更新后:
innodb_thread_concurrency = 0在高峰时间(4-5k 事务/秒)的生产系统上查看行为,这是我观察到的:
我有一个继承的 MySQL 数据库的问题。mysqld 有时会使用高达 2300% 的 CPU。唯一的解决方案是服务 mysql stop 并在表上运行 myisamchk -r。修复索引后,我启动 MySQL,一切正常。
关于永久解决方案的任何想法?
编辑(来自评论):
使用 5.5.29-0ubuntu0.12.04.2-log
key_buffer = 16M max_allowed_packet = 16M 线程堆栈 = 128K 线程缓存大小 = 8 myisam-recover = 备份 最大连接数 = 500 #table_cache = 512 #thread_concurrency = 10 query_cache_limit = 1M query_cache_size = 16M
SELECT SUM(index_length) ndxsize
FROM information_schema.tables
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)
返回
+-----------+ | ndxsize | +-----------+ | 59862016 | +-----------+
SELECT SUM(data_length+index_length)/power(1024,2) datndxsize
FROM information_schema.tables
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)
返回:
+--------------------+ | 数据大小 | +--------------------+ | 488.69915199279785 | …
我们在 Linux 上的 VMWare 下运行 MySQL 5.5,在 2 个 CPU 上运行。我们计划将其增加到 4,但我们有未使用的 CPU,我想知道将数量增加到 8 是否有任何好处?
即使安装了 memcached 和 APC,服务器也需要 20 多秒(等待时间/缓慢的 IO 响应时间)来响应 HTTP 请求。我相信这与 MYSQL 有关系,因为该站点有很多INSERT查询。
任何帮助将不胜感激。提前致谢。
avg-cpu: %user %nice %system %iowait %steal %idle
6.38 0.03 1.05 0.40 0.00 92.14
avg-cpu: %user %nice %system %iowait %steal %idle
10.37 0.00 1.61 3.14 0.00 84.87
avg-cpu: %user %nice %system %iowait %steal %idle
9.40 0.00 1.41 1.53 0.00 87.67
avg-cpu: %user %nice %system %iowait %steal %idle
10.02 0.00 1.42 1.09 0.00 87.46
avg-cpu: %user %nice %system %iowait %steal %idle
9.32 0.00 1.31 0.78 0.00 88.59 …Run Code Online (Sandbox Code Playgroud) 我想将一些(不是全部)MyISAM 表转换为 InnoDB。
最好的配置是什么?(需要添加InnoDB设置,因为我的里面没有InnoDB设置my.cnf)。
我有一个写入密集型的网络应用程序,我买了一个 768M RAM 的 VDS
我将 bulk_insert_buffer_size 指定为 126M,其他一些参数如下:
[mysqld]
bulk_insert_buffer_size=126M
set-variable = max_connections=500
safe-show-database
max_user_connections=200
key_buffer_size = 16M
query_cache_size = 50M
tmp_table_size = 50M
max_heap_table_size = 200M
thread_cache_size = 4
table_cache = 80
thread_concurrency = 8
innodb_buffer_pool_size = 100M
innodb_log_file_size = 25M
query_cache_limit = 50M
innodb_flush_log_at_trx_commit = 2
Run Code Online (Sandbox Code Playgroud) 使用“mysqlslap”观察到以下情况。
mysqlslap -u root -p --create-schema=matrix --query=monthly_kpi.sql --iterations=1 --concurrency=1 --delimiter=";"
Benchmark
Average number of seconds to run all queries: 2.735 seconds
Minimum number of seconds to run all queries: 2.735 seconds
Maximum number of seconds to run all queries: 2.735 seconds
Number of clients running queries: 1
Average number of queries per client: 24
mysqlslap -u root -p --create-schema=matrix --query=monthly_kpi.sql --iterations=1 --concurrency=4 --delimiter=";"
Benchmark
Average number of seconds to run all queries: 14.600 seconds
Minimum number of seconds to run …Run Code Online (Sandbox Code Playgroud) mysql ×9
innodb ×5
my.cnf ×3
myisam ×3
mysql-5.5 ×2
performance ×2
concurrency ×1
linux ×1
memory ×1
mysql-5 ×1
optimization ×1
vmware ×1