Şimdi şöyle bir durum var. InnoDB ağırlıklı kullanıyorsanız -ki evet kullanıyorsunuz, o zaman sunucunuzun RAM miktarının %75-80'nini ona ayırmanız gerekiyor. Yaptığınız testlerde ise InnoDB tanımlaması olmadığını belirtiyor. Yani aldığınız sonuç MyISAM yapısına göre sunulmuş dolayısıyla bu sonuçların doğruluğu kesin değil çünkü InnoDB ağırlığı fazla görünüyor.
Öncelikle, internette gördüğünüz her my.cnf konfigürasyonuna aldanmayın çünkü her site aynı olmadığı gibi, her insanın kullanım şekli de aynı değildir. Örneğin aynı sunucudan 2 tane düşünün. Birisinde farklı yazılım vardır, diğerinde farklıdır ve ikisinin my.cnf konfigürasyonu aynı olmaz. Mesela birinde MySQL yükü yok denecek kadar azdır ve onun my.cnf çok farklıdır. Şimdi siz onu alıp kullanırsanız sunucunuza alakasız bir optimizasyon yapmış olursunuz.
Çok hassas bir detay daha var ki, my.cnf optimizasyonunu mutlak bir biçimde yapmak ve en iyi verimi almak için mevcut veritabanını önce yedeğini alıp sonra silip, ardından my.cnf konfigüre edip, son olarak da MySQL'i başlatıp hemen ardından veritabanını temizce yüklemek gerekiyor. Bunu, bir yazılımın temiz kurulumunu yapmak gibi düşünün. Bilhassa InnoDB kayıtlarının verimli ve güvenli bir şekilde listelenmesi için çok önemli olduğunu söyleyebilirim.
Size şunu sorayım. Hangi paneli, -httpd dahil- scriptleri kullanıyorsunuz? cPanel, Apache, Litespeed, DirectAdmin, Nginx vb. gibi bunlardan hangisi? Bir de sunucu özellikleri tam olarak nedir? Son olarak my.cnf dosyasını buraya kopyalar mısınız? Bu my.cnf optimizasyon kolay bir iş değil. Soracak çok soru olabiliyor. Sitenizin günlük hiti, anlık veri girişleri, kullandığınız önbelleklemeler vs tümünü toplayıp hesaplayıp ona göre sonuç belirlemek gerekiyor. Sizin aldığınız sonuçlar genelde düz mantıkla çalışır. Az önce de belirttiğim gibi, mesela InnoDB tanımlaması yok ve ne tanımlıysa ona göre bir sonuç vermiş ki, halbuki açıkça InnoDB kullanıyorsunuz gibi vs vs konu böyle uzuyor.
Buna ilave olarak, gözlemlediğim kadarıyla sürekli bir veri girişi var. InnoDB tabloların büyüklüğünden bunu anlıyorum çünkü InnoDB insert+update (veri girişi ve güncelleme), MyISAM ise select (okuma) için idealdir. Örneğin hiç veri girişi olmayan ve sadece okunan bir siteniz varsa MyISAM harikadır ama sürekli veri girişi olan bir siteniz varsa InnoDB harikadır. Tabii harikadır ama InnoDB kaynak tüketimi fazladır. RAM miktarının büyük çoğunu ona ayırmanız gerekir ve bunu yapmazsanız hem verim alamazsınız, hem de en ufak bir zorlanmada sunucu yavaşlayabilir, CPU aşırı yükselebilir. Tabii site hızını da olumsuz yönde etkiler maalesef.
uzun uzun cevapladıgın için çok teşekkür ediyorum.
Bu bir site değil. mobil uygulama api 'si yani trafik aplication üzerinden geliyor. DB'ye yazma ağırlıklı işler yapılıyor.
innoDB neden kapalı bunu bilmiyorum nasıl acılır onun için yönlendirmelere,önerilere açığım.
panel olarak openlitespeed, php7.4, mariadb 10.4
sunucu belirttiğim gibi 16gb ram
my.cnf dosyamı aynen oldugu gibi paylaşıyorum.
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[mysqld]
#log-error = /var/lib/mysql/server.err
datadir =/var/lib/mysql
socket =/var/lib/mysql/mysql.sock
tmpdir =/var/tmpfs
user =mysql
symbolic-links =0
port =3306
#bind-address =0.0.0.0
log-error =/var/log/mariadb/mariadb.log
performance-schema = 0
default-storage-engine = InnoDB
innodb_file_per_table = 1
max_allowed_packet = 256M
open_files_limit = 10240
max_binlog_size = 256M
expire_logs_days = 1
thread_stack = 512K
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
join_buffer_size = 2M
binlog_cache_size = 64K
back_log = 1024
query_cache_size = 32M
query_cache_limit = 512K
max_connections = 250
max_connect_errors = 10000
concurrent_insert = 2
connect_timeout = 100
max_heap_table_size = 1G
bulk_insert_buffer_size = 1G
tmp_table_size = 2K
#thread_concurrency = 0
thread_cache_size = 50
key_buffer = 2M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 256M
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_file_per_table
#innodb_data_file_path = ibdata1:128M;ibdata2:10M:autoextend
innodb_buffer_pool_size = 12G
#innodb_additional_mem_pool_size = 4M
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 2G
innodb_buffer_pool_instances = 12
innodb_log_buffer_size = 128M
innodb_lock_wait_timeout = 128 #300du
innodb_thread_concurrency = 8
innodb_commit_concurrency = 2
innodb_flush_method = O_DIRECT
#innodb_support_xa = 0
#skip-innodb-doublewrite
#sync_binlog = 0
wait-timeout = 90
interactive-timeout = 90
long_query_time = 6
log_output = FILE
slow_query_log = OPEN
slow_query_log_file = /etc/mysql-slow-req.log