Задать вопрос

Как лучше оптимизировать MySQL Server?

Приветствую уважаемое комюнити!

Прошу подсказать, как лучше оптимизировать MySQL, уже несколько дней пытаюсь пододобрать оптимальные параметры, но пока не совсем удачно..

вот мой конфиг:

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]

innodb_flush_log_at_trx_commit=1
sync_binlog=1

user            = mysql
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
skip-external-locking
low-priority-updates
skip-name-resolve

key_buffer              = 2048M
max_allowed_packet      = 16M
thread_stack            = 192K
#thread_cache_size       = 8
thread_cache_size       = 64
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
max_connections        = 30
#table_cache            = 64
#thread_concurrency     = 10
thread_concurrency     = 12

query_cache_type        = ON
#query_cache_limit      = 1M
query_cache_limit       = 10M
#query_cache_size        = 16M
query_cache_size        = 256M
innodb_buffer_pool_size = 2G
query_cache_min_res_unit=3K

log_error                = /var/log/mysql/error.log

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

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M


[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
#key_buffer             = 16M
key_buffer              = 2G

sort_buffer=128M
max_join_size=1000000
max_sort_length=20
max_used_connections=21
myisam_sort_buffer_size=1024М
net_read_timeout=12
net_write_timeout=15
wait_timeout=30
interactive_timeout=600
key_buffer_size=2G
max_heap_table_size=512M
tmp_table_size=1024M
read_buffer_size = 32M
read_rnd_buffer_size = 16M
join_buffer_size = 16M
!includedir /etc/mysql/conf.d/


Памяти на сервере 8G, пользовался скриптами mysqltuner и tuning-primer.sh...Пытаюсь настроить эффективность кеша, но, у меня постоянно значение not_cached превышает queries_in_cache..

есть медленные запросы вида:

SET timestamp=1430380261;
SELECT 
          distinct(hi.item_id),
          hi.item_created,
          hi.item_calltype,
          hi.item_requestor_email,
          hi.item_requestor,
          hi.item_title,
          hi.item_status,
          hi.item_priority,
          CONCAT(u.user_first_name,' ',u.user_last_name) assigned_fullname,
          u.user_email as assigned_email,
          his.status_date,
                      max(his.status_date) as last_date 
          FROM helpdesk_item_status his 
          LEFT JOIN helpdesk_items hi ON hi.item_id = his.status_item_id 
          LEFT JOIN users u ON u.user_id = hi.item_assigned_to
          WHERE item_assigned_to=20
                 AND item_status !=2 AND  (item_company_id in ('') OR item_created_by=20) GROUP BY his.status_item_id ORDER BY last_date;


Как бы мне их кешировать, или оптимизировать mysql под них, т.к. доступа к коду у меня нет, а это очень частые запросы.

Большое спасибо!
  • Вопрос задан
  • 711 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Запросы жесть без их оптимизации опциями сервера не обойтись.
Как вариант запихивать всю базу в память и перейти на ссд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы