terça-feira, 23 de outubro de 2018

Analisando o valor do tmp_table_size


1. Encontrar o valor atual do tmp_table_size

mysql> show global variables like 'tmp_tables_size';
Empty set (0,26 sec)

2. Encontrar a porcentagem de tabelas criadas no disco

mysql> show global status like 'created_tmp_disk_tables';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Created_tmp_disk_tables | 125193 |
+-------------------------+--------+
1 row in set (0,00 sec)

3. Continuando

mysql> show global status like 'created_tmp_tables';
+--------------------+--------+
| Variable_name      | Value  |
+--------------------+--------+
| Created_tmp_tables | 411690 |
+--------------------+--------+
1 row in set (0,01 sec)

4. Calculando

Tmp_disk_tables=((created_tmp_disk_tables*100/(created_tmp_tables+created_tmp_disk_tables))
= ((125193*100/(411690 + 125193))
= 23.32%

5. Ajustando

Caso o valor encontrado no cálculo do item 4 exceda 25%, aumentar o valor da variável tmp_table_size e repetindo o mesmo valor na variável max_heap_table_size

vi /etc/my.cnf
tmp_table_size=xxx
max_heap_table_size=xxx

6. Reiniciar o serviço MySQL

segunda-feira, 22 de outubro de 2018

Otimizazando o table_open_cache

Para obter os melhores valores desta variável, acesse o banco de dados e siga os passos abaixo:

1. Pegando os valores atuais de open_tables e opened_tables

mysql> show global status like 'open%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Open_files               | 0     |
| Open_streams             | 0     |
| Open_table_definitions   | 363   |
| Open_tables              | 400   |
| Opened_files             | 658   |
| Opened_table_definitions | 363   |
| Opened_tables            | 42565 |
+--------------------------+-------+
7 rows in set (0,00 sec)

2. Descobrindo a taxa de ocorrência do Table Cache

Taxa de ocorrência = table_open_cache*100/Opened_tables.  
                   = 400*100/42565
                   = 0.94%
Em geral este valor deve ser acima de 50%.

3. Achar o total de tabelas do seu banco de dados

mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE';
+----------+
| COUNT(*) |
+----------+
|      144 |
+----------+
1 row in set (0,01 sec)

4. Encontrar threads atualmente conectadas ao banco de dados

mysql> show global status like '%Threads_connected%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 199   |
+-------------------+-------+
1 row in set (0,00 sec)

5. Calculando o valor do table_open_cache

Table_open_cache = total_tables*Threads_connected*.50
                 = 144*199*.50
                 = 14328

6. Calculando o valor do open_files_limit

open_files_limit= Table_open_cache*2
                = 14328*2
                = 28656

7. Editar as variáveis no arquivo

vi /etc/my.cnf
table_open_cache=39390
open_files_limit=78780

8. Reiniciar o serviço MySQL