我们都知道,在MySQL中。能够使用mysqladmin命令的extended-status选项来查看MySQL的执行状态,比方获取我们经常关注的几个值:

# 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                                  | 2304578     |
| Questions                                | 2259777     |

但这样得到的数值都累计的。假设想了解当前的状态。则须要进行一次差值计算。而庆幸的是,这个client工具提供了两个參数,这样就能实时的得到当前数据库的相关參数值:

-i, --sleep=#       Execute commands again and again with a sleep between,单位是秒

-r, --relative        Show difference between current and previous values when

                                      used with -i. Currently works only 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 |

这样就得到了MySQL当前数据库每秒中相应值。非常直观,这个命令在RHEL 6.4 x86_64系统上能够正常使用。但在SuSE linux 11sp1 x86_64系统中,却是不准确的。即使用-i(或--sleep=)指定刷新的秒数,但事实并不是如此。

在測试中。常常是指定了--sleep=1,但显示结果却是大概1分多钟刷新一次,很奇怪。但在使用strace跟踪发现了原因:

# 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"], [/* 59 vars */]) = 0
brk(0) = 0x62a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0c036fe000
access("/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) = -1 ENOENT (No such file or directory)
open("/usr/lib64/mysql/libmysqlclient.so.15", O_RDONLY) = 3
read(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) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1420448, ...}) = 0
mmap(NULL, 3521032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f0c03185000
fadvise64(3, 0, 3521032, POSIX_FADV_WILLNEED) = 0
mprotect(0x7f0c032ac000, 2093056, PROT_NONE) = 0
mmap(0x7f0c034ab000, 217088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x126000) = 0x7f0c034ab000
mmap(0x7f0c034e0000, 2568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f0c034e0000
close(3) = 0
…… <==== 省略若干 ====>
write(1, "+-------------------------------"..., 4096) = 4096
write(1, " | 0 "..., 4096) = 4096
write(1, " |\n| Com_truncate "..., 4096) = 4096
write(1, "ze | 163"..., 4096) = 4096
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
<span style="color:#ff0000;">nanosleep({83, 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 |

问题就在即使指定的是1秒刷新,但系统调用时却是83s刷新一次:

nanosleep({83, 0}

非常可惜。这个功能不在这个系统中使用。更不幸的时。生产环境中的全都SuSE linux 11sp1系统,郁闷......

准备找个机会,向SUSE原厂问一下,究竟什么情况的。

mysqladmin在SuSE linux系统中--sleep參数使用不准确问题的更多相关文章

  1. 基于suse linux系统的cacti系统部署——rpm包方式

    豆丁 http://www.docin.com/p-191889788.html rpm包方式:啊扬--沙迳:2010-12-1:更改:2011/5/16:一.Cacti的简介(来源:网络):Cact ...

  2. 在linux系统中安装MySQL

    1.安装Linux系统中自带的MySQL安装包 在现在常用的发行版本里都集中了MySQL安装包 CentOS系统中的YUM中包含了MySQL安装包,版本是MySQL5,rpm软件包的名称是mysql- ...

  3. Linux系统中安装软件方法总结

    Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...

  4. Linux系统中的Device Mapper学习

    在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...

  5. 在linux系统中安装VSCode(Visual Studio Code)

    在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网  ...

  6. Linux 系统中的MySQL数据库默认区分大小写

    今天在开发中遇到这么个问题,将连接的数据库改为服务器上的时候(服务器是Linux系统的),程序跑起来后一直出错,总提示数据库的表找不到, 而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不 ...

  7. Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  8. Linux系统中配置jdk

    在Linux系统下安装jdk 1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...

  9. Linux 系统中用户切换

    1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...

随机推荐

  1. MySQL中innodb引擎分析(初始化)

    MySQL的存储引擎是以插件形式工作的,这应该是MySQL的一大特色了吧! 依据<深入理解MySQL>的内容,5.1版本号时存储引擎的插件化都还不是彻底,确切的说是刚加入的特性.为MySQ ...

  2. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3

    点击下载代码   http://download.csdn.net/detail/lideguo1979/8291803 新建一个类RouteNavigation,定义getPath()方法.用来获取 ...

  3. Java数组与泛型

    Java中不能创建泛型数组,例如不能这样写:[java] view plaincopyArrayList<String>[] as = new ArrayList<String> ...

  4. I/O操作技术

     对I/O操作有三种可能的技术:可编程I/O.中断驱动I/O.直接内存存取(DMA) 可编程I/O 当处理器正在运行程序并遇到一个与I/O相关的指令时,它通过给对应的I/O模块发命令来运行这个指令 ...

  5. ssh安装过程

    1.在线安装[root@Asianux ~]# sudo apt-get install ssh   2.进行加密设置[root@Asianux ~]# ssh-keygen -t rsa3.启动SS ...

  6. Java_1Lesson

    cmd使用 进入硬盘分区:D: E: F: 查看目录 dir 进入文件夹 “cd 文件名” .使用javac编译器编译运行. Javac 文件名 运行java程序 Java 文件名 第一个程序 pub ...

  7. Swift - 添加、修改、删除通讯录联系人

    使用AddressBook.framework框架,我们除了可以很方便的获取通信录里的联系人.同时,还能对通讯录进行新增.修改.删除联系人操作. (注意:这些操作同查询一样,首先需要发起授权请求) 1 ...

  8. STM32学习之路-LCD(3)&lt;显示图片&gt;

    祝大家端午和六一快乐!原本今天是想歇息歇息的,可是实在无奈没什么事干.所以就来学习学习LCD显示图片的函数 函数是照搬奋斗的样例,算是些笔记吧.只是奋斗的样例凝视的不是非常具体.今天去看了正点原子的论 ...

  9. How to decompile class file in Java and Eclipse - Javap command example(转)

    Ability to decompile a Java class file is quite helpful for any Java developer who wants to look int ...

  10. Unknown database 'DB_NAME'

    Cannot create PoolableConnectionFactory (Unknown database 'DB_NAME'): com.mysql.jdbc.exceptions.jdbc ...