zoukankan      html  css  js  c++  java
  • MYSQL内存评估

    ### MySQL Memory Calculator Procedure
    ### http://kedar.nitty-witty.com/blog/calculte-mysql-memory-usage-quick-stored-proc
    ### Kedar Vaijanapurkar
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `my_memory` $$
    CREATE PROCEDURE `my_memory` ()
    BEGIN
    
    DECLARE var VARCHAR(100);
    DECLARE val VARCHAR(1024);
    DECLARE done INT;
    
    #Variables for storing calculations
    DECLARE GLOBAL_SUM DOUBLE;
    DECLARE PER_THREAD_SUM DOUBLE;
    DECLARE MAX_CONN DOUBLE;
    DECLARE HEAP_TABLE DOUBLE;
    DECLARE TEMP_TABLE DOUBLE;
    
    #Cursor for Global Variables
    
    #### For < MySQL 5.1 
    #### DECLARE CUR_GBLVAR CURSOR FOR SHOW GLOBAL VARIABLES;
    
    #### For MySQL 5.1+
    DECLARE CUR_GBLVAR CURSOR FOR SELECT * FROM information_schema.GLOBAL_VARIABLES;
    #### Ref: http://bugs.mysql.com/bug.php?id=49758
    
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
    
    
    SET GLOBAL_SUM=0;
    SET PER_THREAD_SUM=0;
    SET MAX_CONN=0;
    SET HEAP_TABLE=0;
    SET TEMP_TABLE=0;
    
    OPEN CUR_GBLVAR;
    
    mylp:LOOP
          FETCH CUR_GBLVAR INTO var,val;
      IF done=1 THEN
        LEAVE mylp;
      END IF;
        IF var in ('key_buffer_size','innodb_buffer_pool_size','innodb_additional_mem_pool_size','innodb_log_buffer_size','query_cache_size') THEN
        #Summing Up Global Memory Usage
          SET GLOBAL_SUM=GLOBAL_SUM+val;
        ELSEIF var in ('read_buffer_size','read_rnd_buffer_size','sort_buffer_size','join_buffer_size','thread_stack','max_allowed_packet','net_buffer_length') THEN
        #Summing Up Per Thread Memory Variables
          SET PER_THREAD_SUM=PER_THREAD_SUM+val;
        ELSEIF var in ('max_connections') THEN
        #Maximum allowed connections
          SET MAX_CONN=val;
        ELSEIF var in ('max_heap_table_size') THEN
        #Size of Max Heap tables created
          SET HEAP_TABLE=val;
        #Size of possible Temporary Table = Maximum of tmp_table_size / max_heap_table_size.
        ELSEIF var in ('tmp_table_size','max_heap_table_size') THEN
          SET TEMP_TABLE=if((TEMP_TABLE>val),TEMP_TABLE,val);
        END IF;
    
    END LOOP;
    CLOSE CUR_GBLVAR;
    #Summerizing:
    select "Global Buffers" as "Parameter",CONCAT(GLOBAL_SUM/(1024*1024),' M') as "Value" union
    select "Per Thread",CONCAT(PER_THREAD_SUM/(1024*1024),' M')  union
    select "Maximum Connections",MAX_CONN union
    select "Total Memory Usage",CONCAT((GLOBAL_SUM + (MAX_CONN * PER_THREAD_SUM))/(1024*1024),' M') union
    select "+ Per Heap Table",CONCAT(HEAP_TABLE / (1024*1024),' M') union
    select "+ Per Temp Table",CONCAT(TEMP_TABLE / (1024*1024),' M') ;
    
    END $$
    DELIMITER ;
    
    mysql> call my_memory();
    +---------------------+------------+
    | Parameter           | Value      |
    +---------------------+------------+
    | Global Buffers      | 2411 M     |
    | Per Thread          | 1.953125 M |
    | Maximum Connections | 1000       |
    | Total Memory Usage  | 4364.125 M |
    | + Per Heap Table    | 16 M       |
    | + Per Temp Table    | 67 M       |
    +---------------------+------------+
    6 rows in set (0.02 sec)
    
    Query OK, 0 rows affected, 1 warning (0.05 sec)
    
    mysql>
    

    参考地址:

    http://kedar.nitty-witty.com/blog/wp-content/uploads/2015/02/mysql-memory-utilization.sql

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
    Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
    Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
    Java实现 蓝桥杯VIP 算法提高 P0401
    Java实现 蓝桥杯VIP 算法提高 P0401
    Java实现 蓝桥杯VIP 算法提高 P0401
    Java实现 蓝桥杯VIP 算法提高 P0401
    Java实现 蓝桥杯VIP 算法提高 P0401
    QApplication::alert 如果窗口不是活动窗口,则会向窗口显示一个警告(非常好用,效果就和TeamViewer一样)
    QString::toWCharArray可以拷贝到宽字符串里
  • 原文地址:https://www.cnblogs.com/abclife/p/5173369.html
Copyright © 2011-2022 走看看