Как лучше оптимизировать 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 под них, т.к. доступа к коду у меня нет, а это очень частые запросы.

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

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

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