Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 11711|Yanıt: 0

[Kaynak] MySQL yapılandırma dosyası my.cnf ayrıntılı olarak açıklanmıştır

[Bağlantıyı kopyala]
Yayınlandı 13.11.2017 11:55:59 | | |
MySQL çalışma parametrelerini ayarlayın, /etc/my.cnf dosyasını değiştirin MySQL çalışma parametrelerini yeniden başlattıktan sonra MySQL çalıştırma parametrelerini yeniden başlattıktan sonra etki gösterecek şekilde ayarlayın, MySQL 4 sürümünden sonra bazı dahili değişkenler MySQL çalışma zamanında ayarlanabilir ancak MySQL yeniden başlatıldığında geçersiz olur.
MySQL Programı - Dizinler ve Dosyalar
basedir = yol # Verilen dizini kök dizin olarak kullanın (kurulum dizini).
datadir = yol # Veritabanı dosyasını verilen bir dizinden okuyun.
pid-file = dosya adı # mysqld programı için süreç kimliğini depolayan bir dosya belirtin (yalnızca UNIX/Linux sistemleri için mevcuttur);

[mysqld]                        
socket = /tmp/mysql.sock # MySQL istemci programı ile sunucu arasındaki yerel iletişim için bir soket dosyası belirtir (Linux'ta varsayılan dosya /var/lib/mysql/mysql.sock dosyasıdır)
port=3306 # MsSQL'in dinlediği portu belirtir
key_buffer = 384M # key_buffer, indeksleme blokları için kullanılan tamponun boyutudur ve tüm okuma ve çoklu yazmalar için daha iyi işlediği indeks miktarını artırır.
                               İndeks bloğu tüm iş parçacıkları tarafından tamponlanır ve paylaşılır, key_buffer boyutu belleğin büyüklüğüne bağlıdır.
table_cache = 512 # Tüm iş başlıkları için açık tablo sayısı. Bu değerin artırılması, mysqld tarafından gereken dosya tanımlayıcı sayısını artırır. Sık sık açılan veri tablolarının getirdiği ek yükü önler
sort_buffer_size = 2M # Sıralanması gereken her iş parçacığı için bu büyüklükte bir tampon ayırın. Bu değerin artırılması, ORDER BY veya GROUP BY işlemlerini hızlandırır.
                               Not: Bu parametreye karşılık gelen tahsis bellek her bağlantıya özeldir! 100 bağlantı varsa, aslında tahsis edilen toplam sıralama tamponu boyutu 100×6 = 600MB'dir
read_buffer_size = 2M # Okuma sorgusu işlemi için kullanılabilecek tampon boyutu. sort_buffer_size'de olduğu gibi, bu parametreye karşılık gelen tahsis bellek de her bağlantıya özeldir.
query_cache_size = 32M # MySQL sorgu sonuç tamponunun boyutunu belirtir
read_rnd_buffer_size = 8M # Sıraladıktan sonra satır işaretçisi kullanılarak parametreyi rastgele okunacak şekilde değiştirin.
myisam_sort_buffer_size =64M # MyISAM tabloları değiştiğinde yeniden sıralamak için tampon gereklidir
thread_concurrency = 8 # Eşzamanlı iş parçacığı sayısı, sunucunun mantıksal işlemcilerinin sayısı olarak ayarlanır ×2 ve CPU H.T hiper iş parçacığı destekliyorsa, × 2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # MySQL'in harici kilitlenmesini önler, hata riskini azaltır ve kararlılığı artırır.
[mysqldump]
max_allowed_packet =16M # Sunucu ile istemci arasında gönderilebilecek maksimum bilgi paketi

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

Diğer isteğe bağlı parametreler:
back_log = 384
    MySQL için olası bağlantı sayısını belirtir.
    MySQL ana iş parçacığı çok kısa bir sürede çok fazla bağlantı isteği aldığında, bu parametre etkili olur ve ana iş parçacığı bağlantıyı kontrol edip yeni bir iş parçacığını başlatmak için kısa bir süre alır.
    back_log parametrenin değeri, MySQL'in yeni isteklere geçici olarak yanıt vermeyi durdurmadan önce yığında kısa süreliğine kaç istek depolanabileceğini gösterir.
    Sistem kısa sürede çok sayıda bağlantıya sahipse, gelen TCP/IP bağlantıları için dinleme kuyruğunun boyutunu belirleyen bu parametrin değerini artırmak gerekir.
    İşletim sisteminizden back_log bir sınır koymaya çalışmak etkisiz olur. Varsayılan değer 50'dir. Linux sistemleri için, 512'den küçük bir tam sayı ayarlamak önerilir.
max_connections = n
    MySQL sunucusunun aynı anda işleyebileceği maksimum veritabanı bağlantısı sayısı (varsayılan ayar 100'dür). Sınır aşırılırsa, Çok fazla bağlantı hatası bildirilir
key_buffer_size = n
    Indeks blokları için RMA değeri (varsayılan ayar 8M), daha iyi yönetilme için indeksin artırılması (tüm okuma ve çoklu yazmalar için)
record_buffer:
    Ardışık tarama yapan her iş dizi, taradığı her tabloya bu büyüklükte bir tampon tahsis eder.
    Eğer çok sayıda ardışık tarama yaparsanız, bu değeri artırmak isteyebilirsiniz. Varsayılan değer 131072 (128K)
wait_timeout:
    Sunucunun bir bağlantıyı kapatmadan önce harekete geçmesini beklediği saniye sayısı.
interactive_timeout:
    Sunucunun etkileşimli bir bağlantıda işlem için beklediği saniye sayısı, sonra bağlantıyı kapatır.
    Etkileşimde bulunan bir müşteri, mysql_real_connect() için CLIENT_INTERACTIVE seçeneğini kullanan bir müşteri olarak tanımlanır.
    Varsayılan değer 28800, 3600 olarak değiştirebilirsiniz.
isim çözme-atla            
    MySQL'i harici bağlantılarda DNS çözümlemesini devre dışı bırakın; bu seçeneği kullanmak MySQL'in DNS'i çözmesi için süren süreyi ortadan kaldırır.
    Ancak, bu seçenek etkinleştirildiğinde, tüm uzak host bağlantısı yetkilendirmelerinin IP adresi yöntemini kullanması gerektiği belirtilmelidir; aksi takdirde MySQL bağlantı isteğini normal şekilde işleyemez!
log-slow-queries = slow.log
    Yavaş sorguları kaydedin ve teker teker optimize edin
skip-innodb
skip-bdb
    İstenmeyen masa türlerini kapatın ve gerekirse bunu eklemeyin
         
         
# > '%query_cache%' gibi değişkenleri gösterin;
# > 'Qcache%' gibi bir durum göster;
Qcache_lowmem_prunes değeri çok büyükse, genellikle yeterli tamponlama olmadığını gösterir;
Qcache_hits değeri çok büyükse, bu sorgu tamponunun çok sık kullanıldığını gösterir ve değer küçükse verimliliği etkilerse, sorgu tamponlamasını kullanmamayı düşünebilirsiniz.
Eğer Qcache_free_blocks değeri çok büyükse, bu tamponda çok fazla kalıntı olduğunu gösterir.


##########################################
###### max_allowed_packet      ######
##########################################
İletişim paketi, MySQL sunucusuna gönderilen tek bir SQL ifadesi veya istemciye tek bir satır olarak gönderilir.
MySQL 5.1 sunucusu ile istemci arasında gönderilebilecek maksimum paket 1 GB'dır.
Bir MySQL istemcisi veya mysqld sunucusu max_allowed_packet bayttan büyük bir paket aldığında, "paket çok büyük" hatası çıkar ve bağlantı kapanır. Bazı istemciler için, iletişim paketi çok büyükse, sorgu sırasında "MySQL sunucusuna bağlantı kaybı" hatasına rastlanabilir.
Hem istemci hem de sunucunun kendi max_allowed_packet değişkenleri var, bu yüzden büyük paketleri yönetmeyi planlıyorsanız, bu değişkeni hem istemci hem sunucuya eklemelisiniz.
Bir mysql istemci programı kullanıyorsanız, max_allowed_packet değişkeni varsayılan olarak 16MB olur. Daha büyük bir değer belirlemek için mysql'i şu şekilde başlatabilirsiniz:
mysql> mysql --max_allowed_packet=32M
Bilgi paketinin boyutunu 32MB'a ayarlıyor.
Sunucu için varsayılan max_allowed_packet değeri 1MB'tir. Sunucu büyük sorguları işlemesi gerekiyorsa, bu değeri artırabilirsiniz (örneğin, büyük blob sütunlarını işlemeye hazırlanıyorsanız). Örneğin, 16MB'a ayarlamak için sunucuyu şu şekilde başlatabilirsiniz:
mysql> mysqld --max_allowed_packet=16M

Ayrıca seçenekler dosyalarını kullanarak max_allowed_packet ayarlayabilirsiniz. Bu değişkeni sunucu için 16MB'ye ayarlamak için, seçenekler dosyasına downlink içeriği ekleyin:
[mysqld]
max_allowed_packet=16M
Bu değişkenin değerini artırmak güvenlidir çünkü ek bellek yalnızca ihtiyaç duyulduğunda tahsis edilir. Örneğin, mysqld sadece uzun bir sorgu gönderdiğinizde veya mysqld büyük sonuç satırları döndürmek zorunda kalırsa daha fazla bellek ayırır. Bu değişkenin küçük varsayılan değeri, istemci ile sunucu arasındaki hata paketlerini yakalamak ve büyük paketlerin yanlışlıkla kullanılması nedeniyle bellek taşmalarının neden olmasını önlemek için önlem niteliğindedir.
Eğer büyük blob değerleri kullanıyorsanız ve mysqld'ye sorguları işlemek için yeterli belleğe erişim izni vermiyorsanız, büyük paketlerle ilgili garip sorunlarla karşılaşırsınız. Bunun böyle olduğunu düşünüyorsanız, mysqld_safe scriptte ulimit -d 256000'i artırmaya başlayıp mysqld'yi yeniden başlatmayı deneyin.
##########################################
##### MySQL'de veritabanı tablolarını nasıl açıp kapatılır #####
##########################################
table_cache, max_connections ve max_tmp_tables sunucunun açık tuttuğu maksimum dosya sayısını etkiler. Bu değerlerden birini veya ikisini artırırsanız, işletim sisteminizin her işlemin açtığı dosya tanımlayıcı sayısına koyduğu sınıra ulaşabilirsiniz. Ancak, birçok sistemde sınırı artırabilirsin. Işletim sisteminizin dokümantasyonundan bunu nasıl yapacağınızı sorun, çünkü sınırları değiştirme yöntemleri sistemden sisteme büyük ölçüde değişir.
table_cache max_connections ile ilgili. Örneğin, 200 açık birleştirme için, en az 200 * n olan bir tablo tamponu olmalıdır, burada n bir birleşmedeki maksimum tablo sayısıdır.
Açık tabloların önbelleği maksimum bir table_cache'ye çıkarılabilir (varsayılan olarak 64; Bu, mysqld'nin -O table_cache=#选项来改变) ile yapılabilir. Bir tablo, önbellek dolu olduğunda ve başka bir iş parçacığı tablo açmaya çalıştığında ya da mysqladmin yenileme veya mysqladmin flush-tables kullanıldığında asla kapanmaz.
Tablo önbelleği dolduğunda, sunucu bir önbellek girişi bulmak için aşağıdaki prosedürü kullanır:
Şu anda kullanılmayan tablolar, en az kullanılan sırayla (LRU) yayımlanır.
Önbellek doluysa ve yayınlanacak tablo yoksa, ancak yeni bir tablo açılması gerekiyorsa, önbellek geçici olarak büyütülmelidir.
Önbellek geçici genişletilmiş durumdaysa ve bir tablo aktiften inaktif hale geçerse, önbellekten kapatılır ve serbest bırakılır.
Her eşzamanlı erişim için bir tablo açın. Bu, aynı tabloya erişen veya aynı sorguda (AS ile) iki iş parçacığına erişiyorsanız, tablonun iki kez açılması gerektiği anlamına gelir. Herhangi bir tablonun ilk açılışı 2 dosya tanımlayıcısını oluşturur; Tablonun her ek kullanımı yalnızca bir dosya tanımlayıcısını oluşturur. İlk açılış için, dosyayı indekslemek için ekstra bir tanımlayıcı kullanılır; Bu tanımlayıcı tüm iş parçacıkları arasında paylaşılır




Önceki:Linux sistemlerinde /etc/init.d dizinini ve /etc/rc.local scriptlerini anlayın
Önümüzdeki:MySQL servisinin Linux CentOS altında başlatıldığını nasıl doğrulayabilirim?
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com