Bug #38153 | mysql-bench: slowdown for update_of_primary_key_many_keys test | ||
---|---|---|---|
Submitted: | 15 Jul 2008 22:13 | Modified: | 28 Feb 2014 18:58 |
Reporter: | Alexey Stroganov | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S5 (Performance) |
Version: | 5.0.66, 5.1.34, 5.6.16 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[15 Jul 2008 22:13]
Alexey Stroganov
[13 Aug 2008 13:58]
Alexey Stroganov
The similar difference in results of the same test(test-insert) was observed for InnoDB between 6.0.5 and 6.0.6. 6.0.5 Ratio 6.0.6 update_of_primary_key_many_keys 656.44 1.3 858.17 update_of_key_big 21.55 1.32 28.64 delete_big_many_keys 378.29 1.33 505.88 In order to analyze these specific tests I've extracted and attached test case.
[14 Aug 2008 13:19]
Alexey Stroganov
perl bug38153.pl --db-socket=/tmp/605.sock MySQL 6.0.5 alpha, ENGINE: InnoDB Generating random keys Inserting 100000 rows Inserted 0 rows Inserted 10000 rows Inserted 20000 rows Inserted 30000 rows Inserted 40000 rows Inserted 50000 rows Inserted 60000 rows Inserted 70000 rows Inserted 80000 rows Inserted 90000 rows Time for update_of_primary_key_many_keys (): 50 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 53 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) perl bug38153.pl --db-socket=/tmp/606.sock MySQL 6.0.6 alpha, ENGINE: InnoDB Generating random keys Inserting 100000 rows Inserted 0 rows Inserted 10000 rows Inserted 20000 rows Inserted 30000 rows Inserted 40000 rows Inserted 50000 rows Inserted 60000 rows Inserted 70000 rows Inserted 80000 rows Inserted 90000 rows Time for update_of_primary_key_many_keys (): 79 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.01 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 69 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
[14 Aug 2008 13:20]
Alexey Stroganov
Test case for the issue
Attachment: bug38153.pl (application/octet-stream, text), 4.09 KiB.
[16 Apr 2009 12:54]
Alexey Stroganov
We observed similar variance in results for update_of_primary_key_many_keys and delete_big_many_keys while testing 5.1.34 release. 5.1.33 5.1.34 delete_big_many_keys 476.51 564.99 update_of_primary_key_many_keys 834.31 917.36 There is no differences in oprofile output for both servers: 5.1.33 samples % symbol name 4475 33.7049 buf_page_is_corrupted 4334 32.6429 buf_calc_page_new_checksum 761 5.7317 rec_get_offsets_func 445 3.3517 os_aio_simulated_handle 393 2.9600 page_simple_validate 375 2.8244 buf_flush_batch 296 2.2294 cmp_dtuple_rec_with_match 5.1.34 samples % symbol name 5042 34.5792 buf_page_is_corrupted 4734 32.4669 buf_calc_page_new_checksum 803 5.5072 rec_get_offsets_func 516 3.5389 os_aio_simulated_handle 465 3.1891 page_simple_validate 384 2.6336 buf_flush_batch 315 2.1603 cmp_dtuple_rec_with_match I've suspect some IO specialties on this box so I rerun test with ramfs: 5.1.30 5.1.34 delete_big_many_keys 32 32 update_of_primary_key_many_keys 29 30 and again oprofile output looks almost identical for release: 5.1.30 samples % symbol name 4277 32.2476 buf_page_is_corrupted 4024 30.3400 buf_calc_page_new_checksum 794 5.9866 rec_get_offsets_func 487 3.6719 page_simple_validate 432 3.2572 os_aio_simulated_handle 306 2.3072 buf_flush_batch 261 1.9679 cmp_dtuple_rec_with_match 5.1.34 samples % symbol name 4307 32.7553 buf_page_is_corrupted 3960 30.1164 buf_calc_page_new_checksum 772 5.8712 rec_get_offsets_func 458 3.4832 os_aio_simulated_handle 435 3.3082 page_simple_validate 296 2.2511 buf_flush_batch 290 2.2055 cmp_dtuple_rec_with_match Will check these results on another box.
[28 Feb 2014 18:58]
Sveta Smirnova
5.0 -> 5.1 regression is not repeatable, but I can repeat some slowdown with the same test in 5.6. I started server with options: ./bin/mysqld --no-defaults --basedir=. --datadir=./data --innodb_log_file_size=128M --innodb_buffer_pool_size=4G --log-error --port=33050 --socket=/tmp/mysql_ssmirnova.sock & I also changed value of $many_keys_loop_count to 1,000,000 (was 100,000). Results: 5.6.16: Time for update_of_primary_key_many_keys (10): 249 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 69 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 5.5.36: Testing update of keys Time for update_of_primary_key_many_keys (10): 223 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 49 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 5.1.73: Time for update_of_primary_key_many_keys (10): 212 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 48 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.01 CPU) 5.0.96: Testing update of keys Time for update_of_primary_key_many_keys (10): 213 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 49 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 5.0.51a: Testing update of keys Time for update_of_primary_key_many_keys (10): 221 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 47 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) So you see noticeable timing increase in 5.6.16: Time for update_of_primary_key_many_keys (10): 249 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Deleting rows from the table Time for delete_big_many_keys (10): 69 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)