版权声明:本文为博主原创文章,未经博主允许不得转载。 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.)
看到也是稍微要好些。但是没有发生死锁的情况。