SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.04.2017 17:30:08

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Расширение ресурсов - MySQL

Столкнулся с проблемой, есть скрипт который перебирает бинарное дерево (начиная с самой вершины), ища где есть свободная ветка (то есть под какой ячейкой незанятое одно из двух мест). Когда в дереве становится около 1000 элементов, скрипт работает довольно медленно (0.5 - 1 сек), а таких запросов происходит много, и в результате скрипт выполняется очень долго, при этом процессор и ОЗУ почти не нагружается (о чем говорит htop). Как выделить mysql больше ресурсов?
Пытался настроить по этой статьи ( https://ruhighload.com/index.php/2009/0 … %80%D0%B0/ ), но у меня нет большинства параметров о которых там написано, в конфигурационном файле, а если их пишу самостоятельно, то ничего не меняется.
Помогите пожалуйста.

/etc/mysql/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/serve … ABLES.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
lc-messages-dir = /usr/share/mysql
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
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 16
# This replaces the startup script AND checks MyISAM TABLES IF needed
# the FIRST TIME they are touched
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * 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.
# AS OF 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes TO syslog due TO /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# 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
#
# * 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!
#
# * 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

#
# * 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 22.04.2017 17:36:19

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Расширение ресурсов - MySQL

В конфигурационном файле параметры устанавливаются  специально, если их значения отличаются от тех, что стоят по умолчанию. Так что то, что их нет в конфиге - это нормально.
Что до устанавливания - каждый параметр должен быть в своей секции, и после установки в ini/cnf-файле нужно mysql-демона перезагружать (или делать reload конфигурации, если это можно).

Какие именно параметры Вы устанавливали сами? Как это делали? Как проверяли результат?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 22.04.2017 17:50:12

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Re: Расширение ресурсов - MySQL

Я все параметры указывал в конце. А где их надо вставить?

key_buffer_size = 512M
innodb_buffer_pool_size = 6G
innodb_flush_method = "O_DIRECT"
thread_cache_size = 16
query_cache_size = 64M

Неактивен

 

#4 22.04.2017 17:59:22

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Расширение ресурсов - MySQL

Давайте начнем с key_buffer_size - что показывает результат запроса
SELECT @@key_buffer_size;
?

И то же самое посмотрите на остальных параметрах - совпадают ли значения с теми, что Вы указали?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 22.04.2017 18:03:19

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Re: Расширение ресурсов - MySQL

mysql> SELECT @@key_buffer_size;
+-------------------+
| @@key_buffer_size |
+-------------------+
|          16777216 |
+-------------------+

Неактивен

 

#6 22.04.2017 18:04:52

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Re: Расширение ресурсов - MySQL

mysql> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
|                 134217728 |
+---------------------------+
1 row in set (0.00 sec)

mysql> SELECT @@innodb_flush_method ;
+-----------------------+
| @@innodb_flush_method |
+-----------------------+
| NULL                  |
+-----------------------+
1 row in set (0.00 sec)


mysql> SELECT @@thread_cache_size ;
+---------------------+
| @@thread_cache_size |
+---------------------+
|                   8 |
+---------------------+

mysql> SELECT @@query_cache_size ;
+--------------------+
| @@query_cache_size |
+--------------------+
|           16777216 |
+--------------------+

Неактивен

 

#7 22.04.2017 18:23:41

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Расширение ресурсов - MySQL

Как-то key_buffer_size не установился. После правки конфиг-файла Вы перезагружали mysql-сервер?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 22.04.2017 18:28:52

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Re: Расширение ресурсов - MySQL

Да, конечно. /etc/init.d/mysql restart

Неактивен

 

#9 22.04.2017 18:33:23

Teles
Участник
Зарегистрирован: 22.04.2017
Сообщений: 6

Re: Расширение ресурсов - MySQL

А как проверить установилось или нет? Это значение в каких единицах ?
+-------------------+
| @@key_buffer_size |
+-------------------+
|          16777216 |
+-------------------+

Неактивен

 

#10 22.04.2017 22:11:26

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Расширение ресурсов - MySQL

Teles написал:

А как проверить установилось или нет? Это значение в каких единицах ?
+-------------------+
| @@key_buffer_size |
+-------------------+
|          16777216 |
+-------------------+

Так и проверить - селектом. Значение в байтах приведено, так что 16мб.

Teles написал:

Я все параметры указывал в конце. А где их надо вставить?

key_buffer_size = 512M
innodb_buffer_pool_size = 6G
innodb_flush_method = "O_DIRECT"
thread_cache_size = 16
query_cache_size = 64M

В приведенном Вами конфиге я не увидел как минимум key_buffer_size, есть key_buffer ;-).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson