| Bug #75019 | Assertion error on punch hole + 64k page size + low buffer pool size | ||
|---|---|---|---|
| Submitted: | 27 Nov 2014 6:52 | Modified: | 28 Nov 2014 2:27 |
| Reporter: | Yoshinori Matsunobu (OCA) | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
| Version: | 5.7.5 lab | OS: | Any |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
[27 Nov 2014 6:52]
Yoshinori Matsunobu
[28 Nov 2014 1:40]
Sunny Bains
Yoshinori, thanks for testing :-)
[28 Nov 2014 2:27]
Yoshinori Matsunobu
I could repeat the assertion error with below simple test case.
1. Create the following table
create table t1 (
id int primary key,
value int,
value2 varchar(255),
index(value, value2)
)engine=innodb;
2. Generate 5Mil rows by the following perl script (so that working set size of primary key and secondary key exceeds buffer poll size)
for(my $i=1; $i <= 5000000; $i++) {
my $txt = 'x' x 150;
print "$i,$i,$txt\n";
}
3. Load the data into table
load data local infile '...' into table t1 fields terminated by ',';
4. Run mysqlslap, and see if mysqld crashes.
mysqlslap --host=X --port=Y --number-of-queries=1000000 --concurrency=40 --query="set @a= floor(5000000*rand()); update test.t1 set value = value+1 where id=@a"
- I used 5.7.5 lab src and built with -DHAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE=1. When starting mysqld, make sure that PUNCH HOLE support is available like this:
2014-11-28T02:20:00.397903Z 0 [Note] InnoDB: PUNCH HOLE support available
- InnoDB setting was as follows. Low innodb_buffer_size was intentional.
innodb_page_size=65536
innodb_doublewrite=0
innodb_compression_level=1
innodb_compression_algorithm=1
innodb_buffer_pool_size=128M
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
innodb_log_file_size=2G
