Большое время на выполнение MYSQL запросов

Тема в разделе "Администрирование серверов", создана пользователем LIFE!, 13 дек 2010.

Статус темы:
Закрыта.
Модераторы: mefish, stooper
  1. LIFE!

    LIFE!

    Регистр.:
    26 окт 2008
    Сообщения:
    245
    Симпатии:
    38
    Есть сайт, размер БД 171 Mb , на выполнение 8 запросов уходит 1.66805 секунд , что непозволительно много , оперативки при этом 150 мб свободно.

    My.cnf

    Код:
    #
    # The MySQL database server configuration file.
    #
    # You can copy this to one of:
    # - "/etc/mysql/my.cnf" to set global options,
    # - "~/.my.cnf" to set user-specific options.
    # 
    # One can use all long options that the program supports.
    # Run program with --help to get a list of available options and with
    # --print-defaults to see which it would actually understand and use.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    # This will be passed to all mysql clients
    # It has been reported that passwords should be enclosed with ticks/quotes
    # escpecially if they contain "#" chars...
    # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
    [client]
    port		= 3306
    socket		= /var/run/mysqld/mysqld.sock
    
    # Here is entries for some specific programs
    # The following values assume you have at least 32M ram
    
    # This was formally known as [safe_mysqld]. Both versions are currently parsed.
    [mysqld_safe]
    socket		= /var/run/mysqld/mysqld.sock
    nice		= 0
    
    [mysqld]
    #
    # * Basic Settings
    #
    user		= mysql
    pid-file	= /var/run/mysqld/mysqld.pid
    socket		= /var/run/mysqld/mysqld.sock
    port		= 3306
    basedir		= /usr
    datadir		= /var/lib/mysql
    tmpdir		= /tmp
    language	= /usr/share/mysql/english
    skip-external-locking
    #
    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    bind-address		= 127.0.0.1
    #
    # * Fine Tuning
    #
    max_allowed_packet = 1M
    table_cache = 170
    read_buffer_size = 56M
    read_rnd_buffer_size = 256K
    record_buffer = 256K
    join_buffer_size = 1M
    net_buffer_length = 2K
    thread_stack = 64K
    max_connections=150
    long_query_time=5
    
    myisam_sort_buffer_size = 1M
    
    tmp_table_size = 4M
    
    query_cache_limit = 1M
    query_cache_size = 32M
    query_cache_type = 1
    skip-bdb
    skip-innodb
    skip-locking
    # * Query Cache Configuration
    #
    query_cache_limit       = 1M
    query_cache_size        = 16M
    #
    # * Logging and Replication
    #
    # Both location gets rotated by the cronjob.
    # Be aware that this log type is a performance killer.
    #log		= /var/log/mysql/mysql.log
    #
    # Error logging goes to syslog. This is a Debian improvement :)
    #
    # 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
    #
    # The following can be used as easy to replay backup logs or for replication.
    # note: if you are setting up a replication slave, see README.Debian about
    #       other settings you may need to change.
    #server-id		= 1
    #log_bin			= /var/log/mysql/mysql-bin.log
    expire_logs_days	= 10
    max_binlog_size         = 100M
    #binlog_do_db		= include_database_name
    #binlog_ignore_db	= include_database_name
    #
    # * 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
    #
    # * Security Features
    #
    # Read the manual, too, if you want chroot!
    # chroot = /var/lib/mysql/
    #
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
    #
    # ssl-ca=/etc/mysql/cacert.pem
    # ssl-cert=/etc/mysql/server-cert.pem
    # ssl-key=/etc/mysql/server-key.pem
    
    
    
    [mysqldump]
    quick
    quote-names
    max_allowed_packet	= 16M
    
    [mysql]
    #no-auto-rehash	# faster start of mysql but no tab completition
    
    [isamchk]
    key_buffer		= 16M
    
    #
    # * NDB Cluster
    #
    # See /usr/share/doc/mysql-server-*/README.Debian for more information.
    #
    # The following configuration is read by the NDB Data Nodes (ndbd processes)
    # not from the NDB Management Nodes (ndb_mgmd processes).
    #
    # [MYSQL_CLUSTER]
    # ndb-connectstring=127.0.0.1
    
    
    #
    # * IMPORTANT: Additional settings that can override those from this file!
    #   The files must end with '.cnf', otherwise they'll be ignored.
    #
    !includedir /etc/mysql/conf.d/
    
    
     
  2. Skilz

    Skilz Создатель

    Регистр.:
    9 дек 2010
    Сообщения:
    15
    Симпатии:
    2
    может быть стоит не только конфиги править, но и оптимизировать запросы?
     
  3. esd

    esd Прохожие

    проблема в скриптах, а не в мускуле... попробуйте как вариант на другой машине выполнить, при аналогичном конфиге....
     
  4. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    SHOWPROCESSLIST
    Промониторь долгие запросы
    Далее делаешь EXPLAIN <запрос>, смотришь сколько строк пробегает мускул, оптимизируешь запросы, проставляешь индексы
    mysql.ini просто так не правь вслепую, это бесполезно, в phpmyadmin есть кнопка сфетофор, там есть анализатор, увеличивый значения, которые красные
     
  5. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    на счет конфиг-а
    скачай "mysqltuner.pl" - перл скрипт

    скачается из сайт

    сайт - http://mysqltuner.pl , можно скачать прям с ето команда ..
    # wget mysqltuner.pl


    и / или скачай tuning-primer.sh

    http://www.day32.com/MySQL/


    А еще убираем коментар здесь

    #log_slow_queries = /var/log/mysql/mysql-slow.log

    потом смотрим что за запросов у нас там ..... находим их в скрипт и ... пробуем оптимизировать их
     
  6. porsche2

    porsche2

    Регистр.:
    18 ноя 2007
    Сообщения:
    667
    Симпатии:
    210
    Ну его к лешему такой конфиг, он не логичен, параметры от балды или на угад. ТС, вперед читать man MySQL. Чтобы настроить конфиг, одного кривого конфига мало, это тоже самое, что и в слепую.

    для начала можно прочитать mysql.ru/docs/tnastroyka.html
     
  7. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    можно просто начать с конфиг по default (если они у тебя есть)
    my-huge.cnf my-large.cnf my-medium.cnf my-small.cnf


    или използувать минималный :
    Код:
    cat > /etc/my.cnf << "EOF"
     
    [mysqld]
    datadir =/var/lib/mysql
    port    =3306
    socket  =/var/run/mysql/mysql.sock
    
    [mysql.server]
    user        =mysql
    basedir     =/var/lib
    
    [safe_mysqld]
    err-log     =/var/log/mysqld.log
    pid-file    =/var/run/mysql/mysql.pid
    
    EOF
    
    
    и потом настроит все необходимое как писал вверх
    нужно что сервер работал хоть 24 часа что бы настроит с "тунинг-пример" или "mysqltuner"

    каждая настройка делается изпод проект который у тебя есть на сервере
    к пример если ты не използуешь inodb зачем заделят памет туда ... и т.д
     
  8. despainer

    despainer

    Регистр.:
    15 фев 2008
    Сообщения:
    615
    Симпатии:
    168
    любой даже самый оттюнингованный сервер можно убить 3 запросами к бд особенно если бд большая (но у вас еще маленькая)

    посмотрел б что было если б у вас бд была 30-40 гигов :)

    скрипты надо разбирать в них скорее всего проблема
     
  9. dolmatov

    dolmatov Создатель

    Регистр.:
    12 окт 2009
    Сообщения:
    41
    Симпатии:
    1
    Ты самму БД оптимизируй и будет тебе счастье.)
     
Статус темы:
Закрыта.