mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
7b16291c36
In async IO completion code, after reading a page,Innodb can wait for completion of other bufferpool reads. This is for example what happens if change-buffering is active. Innodb on Windows could deadlock, as it did not have dedicated threads for processing change buffer asynchronous reads. The fix for that is to have windows now has the same background threads, including dedicated thread for ibuf, and log AIOs. The ibuf/read completions are now dispatched to their threads with PostQueuedCompletionStatus(), the write and log completions are processed in thread where they arrive.
24 lines
750 B
Text
24 lines
750 B
Text
CREATE TABLE t1(
|
|
a INT AUTO_INCREMENT PRIMARY KEY,
|
|
b CHAR(255),
|
|
INDEX(b))
|
|
ENGINE=InnoDB;
|
|
INSERT INTO t1(b) SELECT UUID();
|
|
BEGIN;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
INSERT INTO t1(b) SELECT UUID() FROM t1;
|
|
COMMIT;
|
|
UPDATE t1 SET b=UUID();
|
|
DROP TABLE t1;
|