Server IP : 104.21.38.3 / Your IP : 172.70.143.69 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/mysql/src/mysql-test/suite/innodb_zip/t/ |
Upload File : |
# # Test information_schema.innodb_cmp_per_index # -- source include/have_innodb.inc # Using innodb_log_compressed=0 leads to a larger number of page # compressions, because page_cur_insert_rec_zip() will reorganize the # page before attempting an insert followed by page compression and # page_zip_compress_write_log_no_data(). if (`SELECT @@innodb_log_compressed_pages = 0`) { --skip Needs innodb_log_compressed_pages } # numbers read in this test depend on the page size -- source include/have_innodb_16k.inc # include/restart_mysqld.inc does not work in embedded mode -- source include/not_embedded.inc -- vertical_results SET GLOBAL innodb_cmp_per_index_enabled=ON; # reset any leftover stats from previous tests -- disable_query_log -- disable_result_log SELECT * FROM information_schema.innodb_cmp_per_index_reset; -- enable_result_log -- enable_query_log # see that the table is empty SELECT * FROM information_schema.innodb_cmp_per_index; # create a table that uses compression CREATE TABLE t ( a INT, b VARCHAR(512), c VARCHAR(16), PRIMARY KEY (a), INDEX (b(512)), INDEX (c(16)) ) ENGINE=INNODB KEY_BLOCK_SIZE=2; SELECT database_name, table_name, index_name, compress_ops, compress_ops_ok, uncompress_ops FROM information_schema.innodb_cmp_per_index ORDER BY 1, 2, 3; # insert some data into it BEGIN; -- disable_query_log let $i=128; while ($i) { -- eval INSERT INTO t VALUES ($i, REPEAT('x', 512), NULL); dec $i; } -- enable_query_log COMMIT; ALTER TABLE t DROP INDEX c; GRANT USAGE ON *.* TO 'tuser01'@'localhost' IDENTIFIED BY 'cDJvI9s_Uq'; FLUSH PRIVILEGES; -- connect (con1,localhost,tuser01,cDJvI9s_Uq,) -- connection con1 -- error ER_SPECIFIC_ACCESS_DENIED_ERROR SELECT * FROM information_schema.innodb_cmp_per_index; -- connection default -- disconnect con1 DROP USER 'tuser01'@'localhost'; SELECT database_name, table_name, index_name, CASE WHEN compress_ops=47 and @@innodb_compression_level IN (4,8,9) THEN 65 ELSE compress_ops END as compress_ops, CASE WHEN compress_ops_ok=47 and @@innodb_compression_level IN (4,8,9) THEN 65 ELSE compress_ops_ok END as compress_ops_ok, uncompress_ops FROM information_schema.innodb_cmp_per_index ORDER BY 1, 2, 3; # restart mysqld and see that uncompress ops also gets increased when # selecting from the table again -- source include/restart_mysqld.inc SET GLOBAL innodb_cmp_per_index_enabled=ON; #Force table to use primary key CREATE TABLE tmp_table SELECT * FROM t; SELECT database_name, table_name, index_name, compress_ops, compress_ops_ok, CASE WHEN uncompress_ops=6 and @@innodb_compression_level IN (4,8,9) THEN 9 ELSE uncompress_ops END as uncompress_ops FROM information_schema.innodb_cmp_per_index where table_name = 't' ORDER BY 1, 2, 3; DROP TABLE t,tmp_table; SET GLOBAL innodb_cmp_per_index_enabled=default;