How to figure out if mysql index fits entirely in memory

后端 未结 2 850
春和景丽
春和景丽 2020-12-13 02:38

Is there a way to determine whether a mysql index fits entirely in available memory? If so, how would I:

  • Determine size of mysql indexes
  • Determine ava
相关标签:
2条回答
  • 2020-12-13 03:02

    Depends on Storage Engine

    MyISAM (Caches Index Pages From .MYI files)

    SELECT FLOOR(SUM(index_length)/POWER(1024,2)) IndexSizesMB
    FROM information_schema.tables WHERE engine='MyISAM' AND
    table_schema NOT IN ('information_schema','performance_schema','mysql');
    

    Subtract that from key_buffer_size. If the answer > 0, then Yes

    InnoDB (Caches Data and Index Pages)

    SELECT FLOOR(SUM(data_length+index_length)/POWER(1024,2)) InnoDBSizeMB
    FROM information_schema.tables WHERE engine='InnoDB';
    

    Subtract that from innodb_buffer_pool_size. If the answer > 0, then Yes

    I wrote about this in the DBA StackExchange

    On a dedicated DB Server, make sure InnoDBSizeMB+IndexSizesMB does not exceed 75% of RAM.

    0 讨论(0)
  • 2020-12-13 03:05

    To find memory available to MySQL, look in my.cnf, likely located at: /etc/mysql/my.cnf

    key_buffer_size = 264M
    

    To find size of indexes for a table: SHOW TABLE status FROM [DBNAME]

    0 讨论(0)
提交回复
热议问题