mysql57并发测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aoerqileng/article/details/80138841

2.3 GHz Intel Core i5
核数2 线程数4
配置
innodb_commit_concurrency | 0 |
| innodb_concurrency_tickets | 5000 |
| innodb_thread_concurrency | 1
innodb_buffer_pool_instances | 1
innodb_buffer_pool_size | 134217728

这里写图片描述

在测试的时候运行到17进行的时候,qps突然下降,排查是出现了很多的行锁,并且有死锁的情况发生,死锁原因待分析。

------------------------
LATEST DETECTED DEADLOCK
------------------------
2018-04-28 14:29:21 0x7000074a5000
*** (1) TRANSACTION:
TRANSACTION 2741022, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 6 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 2
MySQL thread id 254, OS thread handle 123145425457152, query id 27373596 localhost 127.0.0.1 msandbox updating
DELETE FROM sbtest4 WHERE id=?
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 50 page no 3482 n bits 144 index PRIMARY of table `test`.`sbtest4` trx id 2741022 lock_mode X locks rec but not gap waiting
Record lock, heap no 24 PHYSICAL RECORD: n_fields 6; compact format; info bits 32
 0: len 4; hex 8003d7bc; asc     ;;
 1: len 6; hex 00000029d320; asc    )  ;;
 2: len 7; hex 2e0000017e2817; asc .   ~( ;;
 3: len 4; hex 8003ce46; asc    F;;
 4: len 30; hex 35353935323238343835342d34313136323434363436322d303737363930; asc 55952284854-41162446462-077690; (total 120 bytes);
 5: len 30; hex 30323333343138333837302d31383635313930333830312d393236393031; asc 02334183870-18651903801-926901; (total 60 bytes);

*** (2) TRANSACTION:
TRANSACTION 2741024, ACTIVE 0 sec inserting, thread declared inside InnoDB 5000
mysql tables in use 1, locked 1
7 lock struct(s), heap size 1136, 4 row lock(s), undo log entries 3
MySQL thread id 253, OS thread handle 123145424621568, query id 27373609 localhost 127.0.0.1 msandbox update
INSERT INTO sbtest4 (id, k, c, pad) VALUES (?, ?, ?, ?)
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 50 page no 3482 n bits 144 index PRIMARY of table `test`.`sbtest4` trx id 2741024 lock_mode X locks rec but not gap
Record lock, heap no 24 PHYSICAL RECORD: n_fields 6; compact format; info bits 32
 0: len 4; hex 8003d7bc; asc     ;;
 1: len 6; hex 00000029d320; asc    )  ;;
 2: len 7; hex 2e0000017e2817; asc .   ~( ;;
 3: len 4; hex 8003ce46; asc    F;;
 4: len 30; hex 35353935323238343835342d34313136323434363436322d303737363930; asc 55952284854-41162446462-077690; (total 120 bytes);
 5: len 30; hex 30323333343138333837302d31383635313930333830312d393236393031; asc 02334183870-18651903801-926901; (total 60 bytes);

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 50 page no 3482 n bits 144 index PRIMARY of table `test`.`sbtest4` trx id 2741024 lock mode S waiting
Record lock, heap no 24 PHYSICAL RECORD: n_fields 6; compact format; info bits 32
 0: len 4; hex 8003d7bc; asc     ;;
 1: len 6; hex 00000029d320; asc    )  ;;
 2: len 7; hex 2e0000017e2817; asc .   ~( ;;
 3: len 4; hex 8003ce46; asc    F;;
 4: len 30; hex 35353935323238343835342d34313136323434363436322d303737363930; asc 55952284854-41162446462-077690; (total 120 bytes);
 5: len 30; hex 30323333343138333837302d31383635313930333830312d393236393031; asc 02334183870-18651903801-926901; (total 60 bytes);

*** WE ROLL BACK TRANSACTION (1)
------------
TRANSACTIONS
------------

死锁不是主要原因,有很多的rwlock

+--------+-----------------------------+-------------+
| Type   | Name                        | Status      |
+--------+-----------------------------+-------------+
| InnoDB | rwlock: dict0dict.cc:2730   | waits=503   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=583   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=521   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=592   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=625   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=527   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=583   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=589   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=597   |
| InnoDB | rwlock: dict0dict.cc:2730   | waits=589   |
| InnoDB | rwlock: trx0purge.cc:238    | waits=27    |
| InnoDB | rwlock: dict0dict.cc:1183   | waits=302   |
| InnoDB | rwlock: fil0fil.cc:1381     | waits=2     |
| InnoDB | rwlock: log0log.cc:838      | waits=800   |
| InnoDB | rwlock: btr0sea.cc:195      | waits=10    |
| InnoDB | rwlock: btr0sea.cc:195      | waits=8     |
| InnoDB | rwlock: btr0sea.cc:195      | waits=11    |
| InnoDB | rwlock: btr0sea.cc:195      | waits=36    |
| InnoDB | rwlock: btr0sea.cc:195      | waits=30    |
| InnoDB | rwlock: btr0sea.cc:195      | waits=7     |
| InnoDB | rwlock: btr0sea.cc:195      | waits=10    |
| InnoDB | rwlock: btr0sea.cc:195      | waits=5     |
| InnoDB | rwlock: hash0hash.cc:353    | waits=27    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=17    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=10    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=11    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=13    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=13    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=20    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=7     |
| InnoDB | rwlock: hash0hash.cc:353    | waits=16    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=14    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=12    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=19    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=27    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=20    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=26    |
| InnoDB | rwlock: hash0hash.cc:353    | waits=13    |
| InnoDB | sum rwlock: buf0buf.cc:1460 | waits=47391 |
+--------+-----------------------------+-------------+
39 rows in set (0.00 sec)

buffer太小,加大到1g,

queries: 2672718 (8907.65 per sec.)

Innodb_row_lock_waits | 1991
下面是调整成rc模式的结果
queries: 2725040 (9082.35 per sec.)
Innodb_row_lock_waits | 2232
看到读提交的情况下,稍微好与rr,但是行锁冲突要多很多。在rc的隔离级别下,将buffer pool在调整会原始值,得到下面的结果:
Innodb_row_lock_waits | 2284
queries: 919080 (3061.05 per sec.)
看到也是稍微要好些。但是没有发生死锁的情况。

猜你喜欢

转载自blog.csdn.net/aoerqileng/article/details/80138841