O que devo definir os valores iniciais do MySQL em My.cnf para Performance?

3

Estou apenas configurando meu novo servidor Linux Ubuntu 8.04 LTS agora e me preparando para o lançamento. Meu aplicativo é um aplicativo construído em PHP usando o Zend Framework, e há um site pesado do MySQL (como provavelmente é a maioria dos sites). Até agora, eu só tenho 1 servidor, e é um servidor LAMP completo.

O que eu estou querendo saber é o que eu devo definir esses valores em (padrões mostrados) para obter o melhor desempenho (tendo em mente que este mesmo servidor também está executando o apache e PHP) Meu servidor tem 4 GB de RAM. Eu apenas recortei os valores necessários do arquivo de configuração para salvar uma confusão em massa.

Aqui está um pouco mais de informação: Tudo até agora é as configurações de instalação padrão (tabelas de banco de dados incluídas). Estou esperando cerca de 100 transações por segundo. Não tenho certeza de quanto ram posso dedicar, como o próprio servidor também está hospedando apache e php, tenho 1gm ram e 4gb burstable (hospedado em um servidor virtual). Principalmente, meu site estará distribuindo valores estáticos (site de namoro), no entanto, ele também estará lidando com transações de diferentes usuários (salva, edita, etc).

Aqui estão algumas seções do meu arquivo my.cnf e seus respectivos valores ...

Qualquer ajuda ou percepção seria muito apreciada.

# Fine Tuning
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

# Query Cache Configuration
query_cache_limit       = 1M
query_cache_size        = 16M

# Here you can see queries with especially long duration
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

# BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb

# InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb

[isamchk]
key_buffer              = 16M
    
por Mike Curry 30.05.2009 / 17:20

3 respostas

3

MySQLTuner :

MySQLTuner is a script written in Perl that will assist you with your MySQL configuration and make recommendations for increased performance and stability. Within seconds, it will display statistics about your MySQL installation and the areas where it can be improved.

It's key to remember that MySQLTuner is a script which can assist you with your server, but it is not the solution to a badly performing MySQL server. The best performance gains come from a thorough review of the queries sent to the server, and an evaluation of the MySQL server itself. A qualified developer in your application's programming or scripting language should be able to work with a MySQL database administrator to find improvements for your server. Once the server and application are optimized well, you may need to consider hardware upgrades to the physical server itself.

    
por 30.05.2009 / 18:23
0

Os padrões geralmente são bons para o caso geral. No entanto, não sei se o seu caso é geral ou não.

Então, quantos usuários, quantos dados, quantas transações / segundo, etc ... você espera processar?

    
por 30.05.2009 / 17:40
0

As pessoas que leem este tópico podem se interessar pelos seguintes artigos:

  1. O que ajustar no MySQL Server após a instalação
  2. ver comentários (desculpe, novo usuário)
por 26.08.2009 / 16:00