Skip to content
/ server Public

Commit 96a3b95

Browse files
committed
MDEV-31956 SSD based InnoDB buffer pool extension
Fix some tests. Make ext_buf_pool test more stable avoiding race conditions for read/write counters.
1 parent 332b0c5 commit 96a3b95

File tree

12 files changed

+124
-71
lines changed

12 files changed

+124
-71
lines changed

include/my_sys.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ C_MODE_START
6060
#define MY_IGNORE_ENOENT 32U /* my_delete() ignores ENOENT (no such file) */
6161
#define MY_ENCRYPT 64U /* Encrypt IO_CACHE temporary files */
6262
#define MY_TEMPORARY 64U /* create_temp_file(): delete file at once */
63+
#define MY_OPEN_FOR_ASYNC_IO 128U /* my_open() open file for async io */
6364
#define MY_NOSYMLINKS 512U /* my_open(): don't follow symlinks */
6465
#define MY_FULL_IO 512U /* my_read(): loop until I/O is complete */
6566
#define MY_DONT_CHECK_FILESIZE 128U /* Option to init_io_cache() */

mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
22
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
3-
@@ -51,7 +51,7 @@
3+
@@ -52,7 +52,7 @@
44
VARIABLE_TYPE INT UNSIGNED
55
VARIABLE_COMMENT Number of adaptive hash table cells in each partition; 16381 at start defaults to being derived from innodb_buffer_pool_size
66
NUMERIC_MIN_VALUE 16381
@@ -9,7 +9,7 @@
99
NUMERIC_BLOCK_SIZE 0
1010
ENUM_VALUE_LIST NULL
1111
READ_ONLY NO
12-
@@ -60,7 +60,7 @@
12+
@@ -61,7 +61,7 @@
1313
SESSION_VALUE NULL
1414
DEFAULT_VALUE 8
1515
VARIABLE_SCOPE GLOBAL
@@ -18,7 +18,7 @@
1818
VARIABLE_COMMENT Number of InnoDB Adaptive Hash Index Partitions (default 8)
1919
NUMERIC_MIN_VALUE 1
2020
NUMERIC_MAX_VALUE 512
21-
@@ -96,7 +96,7 @@
21+
@@ -97,7 +97,7 @@
2222
SESSION_VALUE NULL
2323
DEFAULT_VALUE 1
2424
VARIABLE_SCOPE GLOBAL
@@ -27,7 +27,7 @@
2727
VARIABLE_COMMENT The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility); 1 => New style AUTOINC locking; 2 => No AUTOINC locking (unsafe for SBR)
2828
NUMERIC_MIN_VALUE 0
2929
NUMERIC_MAX_VALUE 2
30-
@@ -108,10 +108,10 @@
30+
@@ -109,10 +109,10 @@
3131
SESSION_VALUE NULL
3232
DEFAULT_VALUE 0
3333
VARIABLE_SCOPE GLOBAL
@@ -40,7 +40,7 @@
4040
NUMERIC_BLOCK_SIZE 1048576
4141
ENUM_VALUE_LIST NULL
4242
READ_ONLY YES
43-
@@ -144,7 +144,7 @@
43+
@@ -145,7 +145,7 @@
4444
SESSION_VALUE NULL
4545
DEFAULT_VALUE 25
4646
VARIABLE_SCOPE GLOBAL
@@ -49,7 +49,7 @@
4949
VARIABLE_COMMENT Dump only the hottest N% of each buffer pool, defaults to 25
5050
NUMERIC_MIN_VALUE 1
5151
NUMERIC_MAX_VALUE 100
52-
@@ -216,10 +216,10 @@
52+
@@ -217,10 +217,10 @@
5353
SESSION_VALUE NULL
5454
DEFAULT_VALUE 134217728
5555
VARIABLE_SCOPE GLOBAL
@@ -62,7 +62,7 @@
6262
NUMERIC_BLOCK_SIZE 1048576
6363
ENUM_VALUE_LIST NULL
6464
READ_ONLY NO
65-
@@ -228,11 +228,11 @@
65+
@@ -229,11 +229,11 @@
6666
SESSION_VALUE NULL
6767
DEFAULT_VALUE 0
6868
VARIABLE_SCOPE GLOBAL
@@ -77,7 +77,7 @@
7777
ENUM_VALUE_LIST NULL
7878
READ_ONLY NO
7979
COMMAND_LINE_ARGUMENT REQUIRED
80-
@@ -240,11 +240,11 @@
80+
@@ -241,11 +241,11 @@
8181
SESSION_VALUE NULL
8282
DEFAULT_VALUE 0
8383
VARIABLE_SCOPE GLOBAL
@@ -92,7 +92,7 @@
9292
ENUM_VALUE_LIST NULL
9393
READ_ONLY YES
9494
COMMAND_LINE_ARGUMENT REQUIRED
95-
@@ -252,7 +252,7 @@
95+
@@ -253,7 +253,7 @@
9696
SESSION_VALUE NULL
9797
DEFAULT_VALUE 0
9898
VARIABLE_SCOPE GLOBAL
@@ -101,7 +101,7 @@
101101
VARIABLE_COMMENT A number that tells how often buffer pool dump status in percentages should be printed. E.g. 10 means that buffer pool dump status is printed when every 10% of number of buffer pool pages are dumped. Default is 0 (only start and end status is printed)
102102
NUMERIC_MIN_VALUE 0
103103
NUMERIC_MAX_VALUE 100
104-
@@ -324,7 +324,7 @@
104+
@@ -325,7 +325,7 @@
105105
SESSION_VALUE NULL
106106
DEFAULT_VALUE 5
107107
VARIABLE_SCOPE GLOBAL
@@ -110,7 +110,7 @@
110110
VARIABLE_COMMENT If the compression failure rate of a table is greater than this number more padding is added to the pages to reduce the failures. A value of zero implies no padding
111111
NUMERIC_MIN_VALUE 0
112112
NUMERIC_MAX_VALUE 100
113-
@@ -348,7 +348,7 @@
113+
@@ -349,7 +349,7 @@
114114
SESSION_VALUE NULL
115115
DEFAULT_VALUE 50
116116
VARIABLE_SCOPE GLOBAL
@@ -119,7 +119,20 @@
119119
VARIABLE_COMMENT Percentage of empty space on a data page that can be reserved to make the page compressible
120120
NUMERIC_MIN_VALUE 0
121121
NUMERIC_MAX_VALUE 75
122-
@@ -588,7 +588,7 @@
122+
@@ -589,10 +589,10 @@
123+
SESSION_VALUE NULL
124+
DEFAULT_VALUE 0
125+
VARIABLE_SCOPE GLOBAL
126+
-VARIABLE_TYPE BIGINT UNSIGNED
127+
+VARIABLE_TYPE INT UNSIGNED
128+
VARIABLE_COMMENT The extended buffer pool file size
129+
NUMERIC_MIN_VALUE 0
130+
-NUMERIC_MAX_VALUE 18446744073709551615
131+
+NUMERIC_MAX_VALUE 4294967295
132+
NUMERIC_BLOCK_SIZE 0
133+
ENUM_VALUE_LIST NULL
134+
READ_ONLY NO
135+
@@ -613,7 +613,7 @@
123136
SESSION_VALUE NULL
124137
DEFAULT_VALUE 600
125138
VARIABLE_SCOPE GLOBAL
@@ -128,7 +141,7 @@
128141
VARIABLE_COMMENT Maximum number of seconds that semaphore times out in InnoDB
129142
NUMERIC_MIN_VALUE 1
130143
NUMERIC_MAX_VALUE 4294967295
131-
@@ -636,7 +636,7 @@
144+
@@ -661,7 +661,7 @@
132145
SESSION_VALUE NULL
133146
DEFAULT_VALUE 30
134147
VARIABLE_SCOPE GLOBAL
@@ -137,7 +150,7 @@
137150
VARIABLE_COMMENT Number of iterations over which the background flushing is averaged
138151
NUMERIC_MIN_VALUE 1
139152
NUMERIC_MAX_VALUE 1000
140-
@@ -660,7 +660,7 @@
153+
@@ -685,7 +685,7 @@
141154
SESSION_VALUE NULL
142155
DEFAULT_VALUE 1
143156
VARIABLE_SCOPE GLOBAL
@@ -146,7 +159,7 @@
146159
VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3
147160
NUMERIC_MIN_VALUE 0
148161
NUMERIC_MAX_VALUE 3
149-
@@ -684,7 +684,7 @@
162+
@@ -709,7 +709,7 @@
150163
SESSION_VALUE NULL
151164
DEFAULT_VALUE 1
152165
VARIABLE_SCOPE GLOBAL
@@ -155,7 +168,7 @@
155168
VARIABLE_COMMENT Set to 0 (don't flush neighbors from buffer pool), 1 (flush contiguous neighbors from buffer pool) or 2 (flush neighbors from buffer pool), when flushing a block
156169
NUMERIC_MIN_VALUE 0
157170
NUMERIC_MAX_VALUE 2
158-
@@ -720,7 +720,7 @@
171+
@@ -745,7 +745,7 @@
159172
SESSION_VALUE NULL
160173
DEFAULT_VALUE 0
161174
VARIABLE_SCOPE GLOBAL
@@ -164,7 +177,7 @@
164177
VARIABLE_COMMENT Helps to save your data in case the disk image of the database becomes corrupt. Value 5 can return bogus data, and 6 can permanently corrupt data
165178
NUMERIC_MIN_VALUE 0
166179
NUMERIC_MAX_VALUE 6
167-
@@ -744,10 +744,10 @@
180+
@@ -769,10 +769,10 @@
168181
SESSION_VALUE NULL
169182
DEFAULT_VALUE 8000000
170183
VARIABLE_SCOPE GLOBAL
@@ -177,7 +190,7 @@
177190
NUMERIC_BLOCK_SIZE 0
178191
ENUM_VALUE_LIST NULL
179192
READ_ONLY NO
180-
@@ -780,7 +780,7 @@
193+
@@ -805,7 +805,7 @@
181194
SESSION_VALUE NULL
182195
DEFAULT_VALUE 84
183196
VARIABLE_SCOPE GLOBAL
@@ -186,16 +199,16 @@
186199
VARIABLE_COMMENT InnoDB Fulltext search maximum token size in characters
187200
NUMERIC_MIN_VALUE 10
188201
NUMERIC_MAX_VALUE 84
189-
@@ -792,7 +792,7 @@
202+
@@ -817,7 +817,7 @@
190203
SESSION_VALUE NULL
191204
DEFAULT_VALUE 3
192205
VARIABLE_SCOPE GLOBAL
193206
-VARIABLE_TYPE BIGINT UNSIGNED
194207
+VARIABLE_TYPE INT UNSIGNED
195208
VARIABLE_COMMENT InnoDB Fulltext search minimum token size in characters
196-
NUMERIC_MIN_VALUE 0
209+
NUMERIC_MIN_VALUE 1
197210
NUMERIC_MAX_VALUE 16
198-
@@ -804,7 +804,7 @@
211+
@@ -829,7 +829,7 @@
199212
SESSION_VALUE NULL
200213
DEFAULT_VALUE 2000
201214
VARIABLE_SCOPE GLOBAL
@@ -204,7 +217,7 @@
204217
VARIABLE_COMMENT InnoDB Fulltext search number of words to optimize for each optimize table call
205218
NUMERIC_MIN_VALUE 1000
206219
NUMERIC_MAX_VALUE 10000
207-
@@ -816,10 +816,10 @@
220+
@@ -841,10 +841,10 @@
208221
SESSION_VALUE NULL
209222
DEFAULT_VALUE 2000000000
210223
VARIABLE_SCOPE GLOBAL
@@ -217,7 +230,7 @@
217230
NUMERIC_BLOCK_SIZE 0
218231
ENUM_VALUE_LIST NULL
219232
READ_ONLY NO
220-
@@ -840,7 +840,7 @@
233+
@@ -865,7 +865,7 @@
221234
SESSION_VALUE NULL
222235
DEFAULT_VALUE 2
223236
VARIABLE_SCOPE GLOBAL
@@ -226,7 +239,7 @@
226239
VARIABLE_COMMENT InnoDB Fulltext search parallel sort degree, will round up to nearest power of 2 number
227240
NUMERIC_MIN_VALUE 1
228241
NUMERIC_MAX_VALUE 16
229-
@@ -852,10 +852,10 @@
242+
@@ -877,10 +877,10 @@
230243
SESSION_VALUE NULL
231244
DEFAULT_VALUE 640000000
232245
VARIABLE_SCOPE GLOBAL
@@ -239,7 +252,7 @@
239252
NUMERIC_BLOCK_SIZE 0
240253
ENUM_VALUE_LIST NULL
241254
READ_ONLY NO
242-
@@ -900,7 +900,7 @@
255+
@@ -925,7 +925,7 @@
243256
SESSION_VALUE NULL
244257
DEFAULT_VALUE 200
245258
VARIABLE_SCOPE GLOBAL
@@ -248,7 +261,7 @@
248261
VARIABLE_COMMENT Number of IOPs the server can do. Tunes the background IO rate
249262
NUMERIC_MIN_VALUE 100
250263
NUMERIC_MAX_VALUE 4294967295
251-
@@ -912,7 +912,7 @@
264+
@@ -937,7 +937,7 @@
252265
SESSION_VALUE NULL
253266
DEFAULT_VALUE 4294967295
254267
VARIABLE_SCOPE GLOBAL
@@ -257,7 +270,7 @@
257270
VARIABLE_COMMENT Limit to which innodb_io_capacity can be inflated
258271
NUMERIC_MIN_VALUE 100
259272
NUMERIC_MAX_VALUE 4294967295
260-
@@ -1044,10 +1044,10 @@
273+
@@ -1069,10 +1069,10 @@
261274
SESSION_VALUE NULL
262275
DEFAULT_VALUE 32
263276
VARIABLE_SCOPE GLOBAL
@@ -270,7 +283,7 @@
270283
NUMERIC_BLOCK_SIZE 0
271284
ENUM_VALUE_LIST NULL
272285
READ_ONLY NO
273-
@@ -1056,10 +1056,10 @@
286+
@@ -1081,10 +1081,10 @@
274287
SESSION_VALUE NULL
275288
DEFAULT_VALUE 1536
276289
VARIABLE_SCOPE GLOBAL
@@ -283,7 +296,7 @@
283296
NUMERIC_BLOCK_SIZE 0
284297
ENUM_VALUE_LIST NULL
285298
READ_ONLY NO
286-
@@ -1092,10 +1092,10 @@
299+
@@ -1117,10 +1117,10 @@
287300
SESSION_VALUE NULL
288301
DEFAULT_VALUE 0
289302
VARIABLE_SCOPE GLOBAL
@@ -296,7 +309,7 @@
296309
NUMERIC_BLOCK_SIZE 0
297310
ENUM_VALUE_LIST NULL
298311
READ_ONLY NO
299-
@@ -1104,7 +1104,7 @@
312+
@@ -1129,7 +1129,7 @@
300313
SESSION_VALUE NULL
301314
DEFAULT_VALUE 0
302315
VARIABLE_SCOPE GLOBAL
@@ -305,7 +318,7 @@
305318
VARIABLE_COMMENT Maximum delay of user threads in micro-seconds
306319
NUMERIC_MIN_VALUE 0
307320
NUMERIC_MAX_VALUE 10000000
308-
@@ -1236,10 +1236,10 @@
321+
@@ -1261,10 +1261,10 @@
309322
SESSION_VALUE NULL
310323
DEFAULT_VALUE 0
311324
VARIABLE_SCOPE GLOBAL
@@ -318,7 +331,7 @@
318331
NUMERIC_BLOCK_SIZE 0
319332
ENUM_VALUE_LIST NULL
320333
READ_ONLY YES
321-
@@ -1260,7 +1260,7 @@
334+
@@ -1285,7 +1285,7 @@
322335
SESSION_VALUE NULL
323336
DEFAULT_VALUE 16384
324337
VARIABLE_SCOPE GLOBAL
@@ -327,7 +340,7 @@
327340
VARIABLE_COMMENT Page size to use for all InnoDB tablespaces
328341
NUMERIC_MIN_VALUE 4096
329342
NUMERIC_MAX_VALUE 65536
330-
@@ -1296,7 +1296,7 @@
343+
@@ -1321,7 +1321,7 @@
331344
SESSION_VALUE NULL
332345
DEFAULT_VALUE 127
333346
VARIABLE_SCOPE GLOBAL
@@ -336,7 +349,7 @@
336349
VARIABLE_COMMENT Number of UNDO log pages to purge in one batch from the history list
337350
NUMERIC_MIN_VALUE 1
338351
NUMERIC_MAX_VALUE 5000
339-
@@ -1308,7 +1308,7 @@
352+
@@ -1333,7 +1333,7 @@
340353
SESSION_VALUE NULL
341354
DEFAULT_VALUE 128
342355
VARIABLE_SCOPE GLOBAL
@@ -345,7 +358,7 @@
345358
VARIABLE_COMMENT Unused
346359
NUMERIC_MIN_VALUE 1
347360
NUMERIC_MAX_VALUE 128
348-
@@ -1344,7 +1344,7 @@
361+
@@ -1369,7 +1369,7 @@
349362
SESSION_VALUE NULL
350363
DEFAULT_VALUE 56
351364
VARIABLE_SCOPE GLOBAL
@@ -354,7 +367,7 @@
354367
VARIABLE_COMMENT Number of pages that must be accessed sequentially for InnoDB to trigger a readahead
355368
NUMERIC_MIN_VALUE 0
356369
NUMERIC_MAX_VALUE 64
357-
@@ -1428,7 +1428,7 @@
370+
@@ -1453,7 +1453,7 @@
358371
SESSION_VALUE NULL
359372
DEFAULT_VALUE 1048576
360373
VARIABLE_SCOPE GLOBAL
@@ -363,7 +376,7 @@
363376
VARIABLE_COMMENT Memory buffer size for index creation
364377
NUMERIC_MIN_VALUE 65536
365378
NUMERIC_MAX_VALUE 67108864
366-
@@ -1596,10 +1596,10 @@
379+
@@ -1621,10 +1621,10 @@
367380
SESSION_VALUE NULL
368381
DEFAULT_VALUE 30
369382
VARIABLE_SCOPE GLOBAL

mysys/my_create.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ File my_create(const char *FileName, mode_t CreateFlags, int access_flags,
4141
DBUG_PRINT("my",("Name: '%s' CreateFlags: %u AccessFlags: %d MyFlags: %lu",
4242
FileName, CreateFlags, access_flags, MyFlags));
4343
#if defined(_WIN32)
44-
fd= my_win_open(FileName, access_flags | O_CREAT);
44+
fd= my_win_open(FileName, access_flags | O_CREAT, MyFlags);
4545
#else
4646
fd= open((char *) FileName, access_flags | O_CREAT | O_CLOEXEC,
4747
CreateFlags ? CreateFlags : my_umask);

mysys/my_open.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ File my_open(const char *FileName, int Flags, myf MyFlags)
5050
if (!(MyFlags & (MY_WME | MY_FAE | MY_FFNF)))
5151
MyFlags|= my_global_flags;
5252
#if defined(_WIN32)
53-
fd= my_win_open(FileName, Flags);
53+
fd= my_win_open(FileName, Flags, MyFlags);
5454
#else
5555
if (MyFlags & MY_NOSYMLINKS)
5656
fd = open_nosymlinks(FileName, Flags | O_CLOEXEC, my_umask);

0 commit comments

Comments
 (0)