Domain - Hosting - Reseller - Dedicated Server - Virtual Server - IRC Shell - Seedbox
Mysql'i Nasıl Optimize Etmeliyim?
Mysql'i Nasıl Optimize Etmeliyim?
-
10gb ram, 6 cpu, 120gb ssd özelliklerinde bir vps'im var.
lepusmorris tarafından 23/May/18 15:57 tarihinde düzenlenmiştir
ram kullanımı 1gb'ın üzerine çıkmıyor. cpu kullanımı max. %2 şeklinde. fakat plesk üzerinde MySQL işlemcisi kullanımı 53.6% (600%, 6 çekirdek arasından) olarak görünmesine rağmen sorgular çok geç yanıt veriyor. tablo yapısı ve sorgularda bir problem yok diye var sayıyorum. satır sayısı 1 milyon civarında. bu tablo üzerinde insert ve select yapılıyor. bundan dolayı cache yapılması sanırım durumu daha da kötüleştirecek. plesk, php 7.2, nginx, phpfpm kullanıyorum; my.cnf üzerinde herhangi bir düzenleme yok. sunucuyu yeniden başlattıktan sonra aynı sorgular yapılmasına rağmen belli bir süre sunucu hızlanıyor.
sunucuyu hızlandırmak için sizce nasıl bir yol izlemeliyim? -
Öncelikle long query'leri incele.
Bu queryler içerisinde where ve join 'ler içerisinde geçen kolonları index olarak ekle.
Service'e restart at
Mysqltunner'i yukle.
daha sonra 24 saat sistem çalışsın.
24 saatin sonunda mysqltunner i çalıştır ve sana tavsiye ettiği cache değerlerini my.cnf'ye gir.
-
wm-t bunu yazdı
Öncelikle long query'leri incele.
Bu queryler içerisinde where ve join 'ler içerisinde geçen kolonları index olarak ekle.
Service'e restart at
Mysqltunner'i yukle.
daha sonra 24 saat sistem çalışsın.
24 saatin sonunda mysqltunner i çalıştır ve sana tavsiye ettiği cache değerlerini my.cnf'ye gir.
+1
-
wm-t bunu yazdı
Öncelikle long query'leri incele.
Bu queryler içerisinde where ve join 'ler içerisinde geçen kolonları index olarak ekle.
Service'e restart at
Mysqltunner'i yukle.
daha sonra 24 saat sistem çalışsın.
24 saatin sonunda mysqltunner i çalıştır ve sana tavsiye ettiği cache değerlerini my.cnf'ye gir.
dediği önerileri yaptım ama 24 saatten fazla geçmesine rağmen hala aynı sonuçları veriyor. bir yerde hata mı yapıyorum?
/etc/my.cnf'e eklediğim satırlar.
query_cache_size = 0
query_cache_type = 0
query_cache_limit = 1M
join_buffer_size = 128K
tmp_table_size = 12M
max_heap_table_size = 12M
thread_cache_size = 4
table_open_cache = 300
innodb_file_per_table = ON
innodb_buffer_pool_size = 5G
innodb_log_file_size = 16Mmysqltuner önerileri
General recommendations:
Control warning line(s) into /var/log/mariadb/mariadb.log file
Restrict Host for user@% to user@SpecificDNSorIp
Enable the slow query log to troubleshoot bad queries
Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
Adjust your join queries to always utilize indexes
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries which have no LIMIT clause
Set thread_cache_size to 4 as a starting value
Increase table_open_cache gradually to avoid file descriptor limits
Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
This is MyISAM only table_cache scalability problem, InnoDB not affected.
See more details here: https://bugs.mysql.com/bug.php?id=49177
This bug already fixed in MySQL 5.7.9 and newer MySQL versions.
Beware that open_files_limit (1024) variable
should be greater than table_open_cache (400)
Consider installing Sys schema from https://github.com/mysql/mysql-sys
Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: http://bit.ly/2wgkDvSVariables to adjust:
query_cache_size (=0)
query_cache_type (=0)
query_cache_limit (> 1M, or use smaller result sets)
join_buffer_size (> 128.0K, or always use indexes with JOINs)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
thread_cache_size (start at 4)
table_open_cache (> 400)
innodb_file_per_table=ON
innodb_buffer_pool_size (>= 5G) if possible.
innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size. -
lepusmorris bunu yazdı
10gb ram, 6 cpu, 120gb ssd özelliklerinde bir vps'im var.
ram kullanımı 1gb'ın üzerine çıkmıyor. cpu kullanımı max. %2 şeklinde. fakat plesk üzerinde MySQL işlemcisi kullanımı 53.6% (600%, 6 çekirdek arasından) olarak görünmesine rağmen sorgular çok geç yanıt veriyor. tablo yapısı ve sorgularda bir problem yok diye var sayıyorum. satır sayısı 1 milyon civarında. bu tablo üzerinde insert ve select yapılıyor. bundan dolayı cache yapılması sanırım durumu daha da kötüleştirecek. plesk, php 7.2, nginx, phpfpm kullanıyorum; my.cnf üzerinde herhangi bir düzenleme yok. sunucuyu yeniden başlattıktan sonra aynı sorgular yapılmasına rağmen belli bir süre sunucu hızlanıyor.
sunucuyu hızlandırmak için sizce nasıl bir yol izlemeliyim?hocam şöyle yapabilirsin aslında geçmiş eski verileri exel ortamına aktarıp oradan çekersen daha verimli olur gibi şimdi bende de bir proje var aynı dert bende de var en mantıklısı exel gibi yatıyor kafama , site ne sitesi veriler public olsa sıkıntı olacakmı sana
-
nereodi bunu yazdılepusmorris bunu yazdı
10gb ram, 6 cpu, 120gb ssd özelliklerinde bir vps'im var.
ram kullanımı 1gb'ın üzerine çıkmıyor. cpu kullanımı max. %2 şeklinde. fakat plesk üzerinde MySQL işlemcisi kullanımı 53.6% (600%, 6 çekirdek arasından) olarak görünmesine rağmen sorgular çok geç yanıt veriyor. tablo yapısı ve sorgularda bir problem yok diye var sayıyorum. satır sayısı 1 milyon civarında. bu tablo üzerinde insert ve select yapılıyor. bundan dolayı cache yapılması sanırım durumu daha da kötüleştirecek. plesk, php 7.2, nginx, phpfpm kullanıyorum; my.cnf üzerinde herhangi bir düzenleme yok. sunucuyu yeniden başlattıktan sonra aynı sorgular yapılmasına rağmen belli bir süre sunucu hızlanıyor.
sunucuyu hızlandırmak için sizce nasıl bir yol izlemeliyim?hocam şöyle yapabilirsin aslında geçmiş eski verileri exel ortamına aktarıp oradan çekersen daha verimli olur gibi şimdi bende de bir proje var aynı dert bende de var en mantıklısı exel gibi yatıyor kafama , site ne sitesi veriler public olsa sıkıntı olacakmı sana
hocam where kullandığım sütunlara index verdikten sonra baya bir performans artışı oldu ama yine de okuma yazma hızları beni tatmin etmiyor. io_capacity falan kurcalıyorum. anlık okuma yazma hızlarını kurcalıyorum şimdi. bu mysqltuner'in dediklerini de uyguladım ama pek fark yok gibi. hep aynı şeyleri öneriyor. ilişkisel tablolar olmasa nosql deniycem direkt. kurcalaya kurcalaya baya yol aldım.
-
Vps kullanıyorsan io düşük olabilir. Senin sorunun sorgularınla alakalı. Önce mysql cnf da slow query loglarını açacaksın. sonra sorgularının query planlarına bakacaksın. İndex vs tanımlarını yapacaksın. Datayı partitionlara ayıracaksın. Yoks cnf dosyasına iki parametre eklemekle o iş düzelmez.
-
Vps kullanıyorsan io düşük olabilir. Senin sorunun sorgularınla alakalı. Önce mysql cnf da slow query loglarını açacaksın. sonra sorgularının query planlarına bakacaksın. İndex vs tanımlarını yapacaksın. Datayı partitionlara ayıracaksın. Yoks cnf dosyasına iki parametre eklemekle o iş düzelmez.
-