Xim*_*era 9 mysql innodb performance
我在 MySQL 和 InnoDB 引擎方面遇到了严重的性能问题。即使是最简单的表也会使写入操作(创建表、插入、更新和删除)非常缓慢,如您在以下代码段中所见。
mysql> CREATE TABLE `test` (`id` int(11) not null auto_increment,
-> PRIMARY KEY(`id`)) ENGINE=InnoDB;
Query OK, 0 rows affected (4.61 sec)
mysql> insert into test values ();
Query OK, 1 row affected (1.92 sec)
mysql> insert into test values ();
Query OK, 1 row affected (0.88 sec)
mysql> insert into test values ();
Query OK, 1 row affected (1.10 sec)
mysql> insert into test values ();
Query OK, 1 row affected (6.27 sec)
mysql> select * from test;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)
mysql> delete from test where id = 2;
Query OK, 1 row affected (0.28 sec)
mysql> delete from test where id = 3;
Query OK, 1 row affected (6.37 sec)
Run Code Online (Sandbox Code Playgroud)
我一直在看htop,等待时间长不是因为CPU负载异常。几乎为零,内存使用也正常。如果我使用 MyISAM 引擎创建相同的表,那么它可以正常工作。我的 my.cnf 文件包含以下内容(如果我没记错的话,我没有对默认的 Debian 配置进行任何更改):
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 40M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 100
table_cache = 64
thread_concurrency = 10
query_cache_limit = 1M
query_cache_size = 40M
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
Run Code Online (Sandbox Code Playgroud)
我也试过重新启动服务器,但它没有解决任何问题。
慢查询日志不提供任何额外信息。
innodb_flush_log_at_trx_commit = 2为了更好的速度(=1为了更好的安全性)
sync_binlog = 0 如果您不使用二进制日志。
"Batch" INSERTs — 单个INSERT语句中的多行。(如果你有很多,一次做 100 个。) LOAD DATA也非常适合装载。
innodb_buffer_pool_size = 70% 的可用内存。
auto_commit = 1,或使用 BEGIN ... COMMIT
thread_stack = 256K 我很惊讶它没有因为你的小价值而崩溃。
尽管如此,时间(1s-6s)还是非常不合理的。即使一切都设置为“错误”,INSERT应该可以预期简单的 0.1 秒。
这是在“云”中运行吗?有其他事情发生吗?
| 归档时间: |
|
| 查看次数: |
21096 次 |
| 最近记录: |