We all know that in MySQL. The ability to use the extended-status option of the mysqladmin command to view the execution status of MySQL, for example, is to obtain several values that we often focus on:
# mysqladmin-uroot-proot ext |grep "questions\| queries\| innodb_rows\| Com_select \| Com_insert \| Com_update \| Com_delete "| Com_delete | 26750 | | Com_insert | 347420 | | Com_select | 1341126 | | Com_update | 454425 | | innodb_rows_deleted | 26590 | | innodb_rows_inserted | 347416 | | Innodb_rows_read | 2964050 | | innodb_rows_updated | 695605 | | Queries &N bsp;| 2304578 | | Questions | 2259777 |
But the resulting values are cumulative. Suppose you want to know the current state. A difference calculation is required. Fortunately, this client tool provides two parameters, so that you can get the relevant parameters of the current database in real time:
-I,--sleep=# Execute commands again and again with a sleep between, unit is seconds
-R,--relative Show difference between current and previous values when
Used With-i. Currently works with Extended-status.
# mysqladmin-uroot-proot Ext-i 1-r |grep "questions\| queries\| innodb_rows\| Com_select \| Com_insert \| Com_update \| Com_delete "| Com_delete | 26750 | | Com_insert | 347420 | | Com_select | 1341129 | | Com_update | 454425 | | innodb_rows_deleted | 26590 | | innodb_rows_inserted | 347416 | | Innodb_rows_read | 2964050 | | innodb_rows_updated | 695605 | | Queries | 2304592 | | Questions | 2259791 |
This gives the MySQL current database the corresponding value per second. Very intuitive, this command can be used normally on Rhel 6.4 x86_64 systems. However, in the SUSE Linux 11sp1 x86_64 system, it is inaccurate. Even if you specify the number of seconds to refresh with-I (or--sleep=), this is not true.
In the test. --sleep=1 is often specified, but the result is about 1 minutes of refresh, which is strange. However, the cause was found using strace tracing:
# strace Mysqladmin-uroot-proot ext-i 1-r |grep "questions\| queries\| innodb_rows\| Com_select \| Com_insert \| Com_update \| Com_delete "Execve" ("/usr/bin/mysqladmin", ["Mysqladmin", "-uroot", "-proot", "ext", "-I", "1", "-R"], [/*/*/*/*/*/]) = 0 BRK (0) = 0x62a000mmap (NULL, 4096, prot_read| Prot_write, map_private| Map_anonymous,-1, 0) = 0x7f0c036fe000access ("/etc/ld.so.preload", R_OK) =-1 ENOENT (No such file or directory) open ( "/usr/lib64/mysql/tls/x86_64/libmysqlclient.so.15", o_rdonly) =-1 ENOENT (No such file or directory) stat ("/usr/lib64/ Mysql/tls/x86_64 ", 0x7fffbb00c0f0) =-1 ENOENT (No such file or directory) open ("/usr/lib64/mysql/tls/ libmysqlclient.so.15 ", o_rdonly) =-1 ENOENT (No such file or directory) stat ("/usr/lib64/mysql/tls ", 0x7fffbb00c0f0) = 1 ENOENT (no such file or directory) open ("/usr/lib64/mysql/x86_64/libmysqlclient.so.15", o_rdonly) = 1 ENOENT (no such file or directory) stat ("/usr/lib64/mysql/x86_64", 0x7fffbb00c0f0) = 1ENOENT (No such file or directory) open ("/usr/lib64/mysql/libmysqlclient.so.15", o_rdonly) = 3read (3, "\177elf\2\1\1\0\0 \0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\262\1\0\0\0\0\0 "..., 832) = 832fstat (3, {st_mode=s_ifreg|0755, st_size=1420448 , ...}) = 0mmap (NULL, 3521032, prot_read| Prot_exec, map_private| Map_denywrite, 3, 0) = 0x7f0c03185000fadvise64 (3, 0, 3521032, posix_fadv_willneed) = 0mprotect (0x7f0c032ac000, 2093056, P Rot_none) = 0mmap (0x7f0c034ab000, 217088, prot_read| Prot_write, map_private| map_fixed| Map_denywrite, 3, 0x126000) = 0x7f0c034ab000mmap (0x7f0c034e0000, 2568, prot_read| Prot_write, map_private| map_fixed| Map_anonymous,-1, 0) = 0x7f0c034e0000close (3) = 0 ... <==== omit several ====>write (1, "+---- ---------------------------"..., 4096) = 4096write (1," | 0 "..., 4096) = 4096write (1," |\n| Com_truncate "..., 4096) = 4096write (1," ze | 163 "..., 4096) = 4096rt_sigprocmask (Sig_block, [CHLD], [], 8) = 0rt_sigaction (SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0rt_sigprocmask (Sig_setmask, [], NULL, 8) = 0<span style = "COLOR: #ff0000;" >nanosleep ({0}</span>,|, Com_delete | 26750 | | Com_insert | 347420 | | Com_select | 1341136 | | Com_update | 454425 | | innodb_rows_deleted | 26590 | | innodb_rows_inserted | 347416 | | Innodb_rows_read | 2964050 | | innodb_rows_updated | 695605 | | Queries | 2304622 | | Questions | 2259821 |
The problem is that even if you specify a 1-second refresh, the system call is 83s refreshed once:
Nanosleep ({83, 0}
It was a pity. This feature is not used in this system. More unfortunate when. All of the SUSE Linux 11SP1 systems in the production environment, depressed ...
Get ready for a chance to ask the SuSE manufacturer what the situation is.
Mysqladmin incorrect use of--sleep parameters in SuSE Linux systems