zoukankan      html  css  js  c++  java
  • mysql 知识 show status

    mysql> show status;

    Com_xxx 语句计数变量表示每个xxx 语句执行的次数。每类语句有一个状态变量。例如,Com_delete和Com_insert分别统计DELETE 和INSERT语句执行的次数。然而,如果一个查询的结果是从查询缓存中得到的,这会增加Qcache_hits,而不是Com_select

    Connections                        4192

    试图连接到(不管是否成功)MySQL服务器的连接数。

    Created_tmp_disk_tables            0

    服务器执行语句时在硬盘上自动创建的临时表的数量

    Created_tmp_files                  5

    mysqld创建的临时文件个数    

    Created_tmp_tables                 1

    服务器执行语句时在内存上自动创建的临时表的数量,如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时 表基于内存而不基于硬盘。

    Flush_commands                     1

    flush的执行个数    

    Handler_commit                     0     

    Handler_delete                     0

    从 表中delete行的次数,此参数与 Com_delete不一样,只要执行delete,Com_delete就会增加,而Handler_delete只有当在表中删除了行的时候才增加。 如果delete删除没有影响到表里的任何行,则不会增加Handler_delete值

    Handler_discover                   0     

    Handler_prepare                    0     

    Handler_read_first                 0

    索引中第一条被读的次数。这个表明。服务器正在进行全索引扫描 explain看的时候tpye类型为index    

    Handler_read_key                   0

    根据索引读行的次数,如果较高,说明查询使用了正确的表索引,explain看的时候tpye类型为const、eq_reg、ref、range、

    Handler_read_next                  0

    根据键顺序来读取下一行,如果你使用索引范围(range)或执行索引(index)扫描,该值增加,增加的大小为查出来的行数,一般order by 键值  该值增加 

    Handler_read_prev                  0

    根据键顺序来读取前一行, 基本上是用在ORDER BY ... DESC. 增加的大小为查出来的行数

    Handler_read_rnd                   0

    根据固定位置读一行的请求数,当需要对非键值排序时,该值会增加或者需要mysql扫描整个表时,该值会增加,增加的大小为查出来的行数 

    Handler_read_rnd_next              0

    在数据文件中读下一行的请求数,如果你正进行大量的表扫描,该值较高,并且增加的值为扫描的行数

    (select  * from mrhao_order_info where address like '%AA%' order by address ,这个值会导致Handler_read_rn增加7,Handler_read_rnd_next 而这个会增加103840,

    而select  * from mrhao_order_info where address like '%AA%' Handler_read_rnd_next 这个会增加103840,而Handler_read_rnd不会增加)

    Handler_rollback                   0     

    Handler_savepoint                  0     

    Handler_savepoint_rollback         0     

    Handler_update                     0     

    Handler_write                      132

    (以上handler同Handler_delete,只有影响了表里的任何行,才会增加该值)

    Innodb_buffer_pool_pages_data      491   

    Innodb_buffer_pool_pages_dirty     0     

    Innodb_buffer_pool_pages_flushed   6050  

    Innodb_buffer_pool_pages_free      0     

    Innodb_buffer_pool_pages_latched   0     

    Innodb_buffer_pool_pages_misc      21    

    Innodb_buffer_pool_pages_total     512

    data 包含数据的页数(脏或者干净的)dirty 当前的脏页数。flushed  刷新的页数 free 空页数

    latched 锁定的页数(由于这个数据很号资源,所以UNIV_DEBUG 系统上编译使用) misc分配给行锁或者

    hash索引管理用的页数 total 是总的页数 total=data+free+misc(5.4上 1页=16k)

    Innodb_buffer_pool_read_ahead_rnd  3288  

    Innodb_buffer_pool_read_ahead_seq  31840 

    Innodb_buffer_pool_read_requests   3413220598

    Innodb_buffer_pool_reads           104184

    Innodb_buffer_pool_wait_free       0

    Innodb_buffer_pool_write_requests  85786

    read_ahead_rnd 表示在初始化innodb时,使用随机预读的个数,这个发生在对一个表有大量随机扫描的查询,read_ahead_seq 在初始化innodb时,使用顺序预读的个数,一般发生在全表顺序扫描,(innodb有两种预读模式:随机预读方式跟顺序预读 http://hi.baidu.com/fishhust/blog/item/7558f41083fdb808213f2efb.html/cmtid/71718e369bb4353a0b55a960  http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-io.html)       read_requests 逻辑读请求的个数,reads 不在buffer pool 不得不从磁盘读取的逻辑请求个数,wait_free,一般情况下,在后台像innodb buffer pool写,然后,当需要读或者创建时,而又没有干净的页使用时,就需要等待页面刷新,这个状态就是等待实例进行计数, write_requests  为往buffer pool写入的个数

    Innodb_data_fsyncs                 32146 

    Innodb_data_pending_fsyncs         0     

    Innodb_data_pending_reads          0     

    Innodb_data_pending_writes         0     

    Innodb_data_read                   1418334208

    Innodb_data_reads                  146431

    Innodb_data_writes                 34452 

    Innodb_data_written                212622848

    read 从服务器开启以来,innodb读取的字节数。reads 服务器读取的页数 ,written innodb写入的字节数 writes  服务器写入的页数(1页16K)fsyncs fsyncs()操作数,pending_fsyncs 挂起的fsyncs()操作数 pending_reads 挂起的读 pending_writes挂起的写

    Innodb_dblwr_pages_written         6050  

    Innodb_dblwr_writes                3324 

    pages_written 双写操作已经写好的页数。  writes  已经执行的双写操作数量

    Innodb_log_waits                   0     

    Innodb_log_write_requests          2617  

    Innodb_log_writes                  22335 

    Innodb_os_log_fsyncs               25566 

    Innodb_os_log_pending_fsyncs       0     

    Innodb_os_log_pending_writes       0     

    Innodb_os_log_written              12722176

    Innodb_page_size                   16384 

    Innodb_pages_created               13    

    Innodb_pages_read                  610723

    Innodb_pages_written               6050

    size编译时,页的大小,一般为16K created 新建的页数 read  读的页数 written 写的页数

    Innodb_row_lock_current_waits      0     

    Innodb_row_lock_time               0     

    Innodb_row_lock_time_avg           0     

    Innodb_row_lock_time_max           0     

    Innodb_row_lock_waits              0     

    Innodb_rows_deleted                91    

    Innodb_rows_inserted               824   

    Innodb_rows_read                   1155270834

    Innodb_rows_updated                337

    deleted 删除的行数 inserted 插入的行数 read扫描时的行数(测试发现不是读取的行数) updated跟新的行数 以上数据只对innodb引擎,而com_ handler_是对所有引擎

    Key_blocks_not_flushed             0     

    Key_blocks_unused                  7150  

    Key_blocks_used                    211   

    Key_read_requests                  872516

    Key_reads                          4553  

    Key_write_requests                 7498  

    Key_writes                         3768

    Key_blocks_not_flushed  在 key cache中修改了,但是还没有刷新到磁盘上的块数,Key_blocks_unused     未使用的块数(key_buffer控制),

    Key_blocks_used     使用的块数Key_read_requests  从cache中读取的请求数,Key_reads   从磁盘读取的块数,用Key_reads/Key_read_requests来计算cache的miss rate

    Key_write_requests 写入cache的请求数,Key_writes  写入磁盘的块数

    (注: 内存与磁盘交互的是块数,而cache的请求数为操作的行数。myisam 中data 与index是文件是分离的,当insert 数据的时候,myisam会直接插入数据到磁盘,但不会立即插入index到磁盘上,而是直接插入key_buffer中,而不刷新到磁盘上,所以有时候 Key_blocks_not_flushed 与Key_write_requests 可能会很高,但Key_writes 确很低,可用“flush table 表名” 强制刷新index到磁盘上。如果大量的块没有flush到磁盘上,若服务器这时候出现故障,myisam会在下次重启时,根据data文件重建 index文件,若没有重建成功,可用”repair table 表名“修理表   )

    Last_query_cost                    0.000000

    查询优化器计算的最后编译的查询的总成本,这个在对于同一语句,来对比不同优化器很有用,默认为0,该变量为session变量

    Max_used_connections               22  

    服务器启动后,同时使用的连接的最大数量。

    Not_flushed_delayed_rows           0

    等待写入INSERT DELAY队列的行数

    Open_files           

    Open_streams

    Open_table_definitions

    Open_tables

    Opened_files

    Opened_table_definitions

    Opened_tables

    Open_files 打开文件的个数,这个统计是服务器打开的正规文件的个数。不包括socket 及pipe。当打开myisam表数据时,他会增加两个(数据文件与索引文件),当打开innodb表时,该值不增加,当打开的myisam表已另一个别 名打开时,Open_files只会增加一个。flush tables 会清空该值

    Opened_files,当增加Open_files同时,他会已同样大小增加该值。当table_open_cache增加,或者flush tables 时,该值是不会减少,但也不增加的。

    Open_table_definitions 打开表时被cache的frm文件个数。

    Open_tables 打开表的个数。

    Opened_table_definitions 与 Opened_tables 的解释与Opened_files差不多(跟网上说的只有当

    table cache 到达table_open_cache时,才会增加Opened_files这值不一样哦),以上状态有global 跟session

    Prepared_stmt_count                0

    当前prepared statements的个数,最大数会由变量max_prepared_stmt_count控制 ,当DEALLOCATE PREPARE时,改状态值会减小  

    Qcache_free_blocks                 0     

    Qcache_free_memory                 0     

    Qcache_hits                        0     

    Qcache_inserts                     0     

    Qcache_lowmem_prunes               0     

    Qcache_not_cached                  0     

    Qcache_queries_in_cache            0     

    Qcache_total_blocks                0

    Qcache_total_blocks 显示了所有的块数(未使用的内存跟已使用),而Qcache_free_blocks 反映了未使用的块数。如果Qcache_free_blocks很大(如果没有内存碎片的话,应该为1),说明内存的碎片很多,内存的使用率会比较差,所 以这时虽然 Qcache_free_memory显示还有剩余的内存,也可能无法使用,当插入新的query时就需要清除旧的,使得 Qcache_lowmem_prunes很高。可以使用

    flush query cache重整内存,操作之后Qcache_free_blocks应该为1,因为所有未使用的内存都放在一起作为连续的一块了  

    Queries  

    被服务器执行的语句个数,包括存储过程里的语句,也包括show status之类的  

    Questions                          19483094

    被服务器执行的语句个数, 但是不包括存储过程里面的语句

    Rpl_status                         NULL  (暂时未使用)

    Select_full_join                   0     

    Select_full_range_join             0     

    Select_range                       0     

    Select_range_check                 0     

    Select_scan                        1

    有兴趣可以看看下面内容

    http://hackmysql.com/selectandsort

    在优化器explain中,显示的第一个表或者唯一的一个表他会影响: Select_scan and Select_range,

    第二个表或子表会影响: Select_full_join, Select_range_check, and Select_full_range_join

    show session status like "select%";的值会按照以下规则来增加

    1;Select_scan 当顺序的从磁盘读取时,会增加该值,如explain中第一个表的type" 列显示ALL

    EXPLAIN select * from t1,t2

    mysql  show status - horse - Horse

    2:Select_range 当explain中第一个表的type" 列显示range时,该值增加

    EXPLAIN select * from t1,t2 where t1.c1>7800 and t1.c1<8000 and t1.c1=t2.c1

    mysql  show status - horse - Horse

    3:Select_full_join  explain当第二个表或子表的“type" 列显示ALL

    EXPLAIN select * from t1,t2 where t1.c1>7800 and t1.c1<8000 and t1.c2=t2.c2

    mysql  show status - horse - Horse

    4:Select_full_range_join  explain的第二个表或子表为range时 该值增加

    EXPLAIN select * from t1,t2 where t1.c1>7800 and t1.c1<8000 and t2.c1<1000 这个会增加Select_full_range_join 及Select_range

    mysql  show status - horse - Horse

    5:Select_range_check 的意思是不确定range的范围,

    如:EXPLAIN select * from t2,t1 where t2.c1<t1.c2;第二个表显示:Range checked for each record (index map: 0x1)

    mysql  show status - horse - Horse

    Sort_merge_passes                  0     

    Sort_range                         0     

    Sort_rows                          0     

    Sort_scan                          0

    一般的,查询sort都会经历三个步骤

    1.  查找where条件的值

    2. 排序值

    3. 读排序后的行

    当在第一步时增加Select_scan, 则第三步就会是 增加Sort_scan. 如果第一步是增加 Select_range,则第三步就是 增加Sort_range.

    Sort_merge_passes 包括两步。MySQL 首先会尝试在内存中做排序,使用的内存大小由系统变量 Sort_buffer_size 决定,如果它的大小不够把所有的记录都读到内存中,MySQL 就会把每次在内存中排序的结果存到临时文件中,这时候会增加Sort_merge_passes。等 MySQL 找到所有记录之后,再把临时文件中的记录做一次排序。实际上,MySQL 会用另一个临时文件来存再次排序的结果,所以通常会看到 Sort_merge_passes 增加的数值是建临时文件数的两倍。因为用到了临时文件,所以速度可能会比较慢,增加 Sort_buffer_size 会减少 Sort_merge_passes 和 创建临时文件的次数。但盲目的增加 Sort_buffer_size 并不一定能提高速度,

    Slave_open_temp_tables             0     

    Slave_retried_transactions         0     

    Slave_running                      OFF   

    Slow_launch_threads                0 

    The number of threads that have taken more than slow_launch_time seconds to create.    

    Slow_queries                       0     

    The number of queries that have taken more than long_query_time seconds.

    Table_locks_immediate              24364829

    Table_locks_waited                 0     

    Table_locks_immediate      立即获得的表的锁的次数。

    Table_locks_waited         不能立即获得的表的锁的次数。

    Threads_cached                     0     

    Threads_connected                  12    

    Threads_created                    4191  

    Threads_running                    1  

    Threads_cached        线程的缓存值,

    Threads_connected     当前打开的连接的数量。

    Threads_created       创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。缓存访问率的计算方法 Threads_created(新建的线程)/Connections(只要有线程连接,该值就增加)。

    Threads_running   激活的(非睡眠状态)线程数。

    Uptime                             978671

    The number of seconds that the server has been up. 

    Uptime_since_flush_status          978671

    The number of seconds since the most recent FLUSH STATUS statement(FLUSH STATUS,是把当前的session值加到global上,并重置key-cache及把Max_used_connections值变为当前的连接 数).

  • 相关阅读:
    创建线程的方式三:实现Callable接口 --- JDK 5.0新增
    线程的通信
    多线程的实例练习:银行账户双储户问题
    解决线程安全问题的方式三:Lock锁 --- JDK5.0新增
    演示线程的死锁问题
    Synchronized的各场景使用方法(多窗口售票例子接上篇)
    线程的【生命周期】和【线程的同步】(下面有多窗口售票例子)
    多线程:继承方式和实现方式的联系与区别
    创建多线程的方式二:实现Runnable接口
    Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2131883.html
Copyright © 2011-2022 走看看