Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11711|Jawab: 0

[Sumber] File konfigurasi MySQL my.cnf dijelaskan secara rinci

[Salin tautan]
Diposting pada 13/11/2017 11.55.59 | | |
Sesuaikan parameter berjalan MySQL, ubah file /etc/my.cnf Sesuaikan parameter berjalan MySQL agar berlaku setelah memulai ulang MySQL, setelah versi MySQL 4, beberapa variabel internal dapat diatur pada runtime MySQL, tetapi akan tidak valid saat MySQL dimulai ulang.
Program MySQL - Direktori dan File
basedir = path # Gunakan direktori yang diberikan sebagai direktori root (direktori instalasi).
datadir = path # Baca file database dari direktori tertentu.
pid-file = nama file # Tentukan file untuk program mysqld untuk menyimpan ID proses (hanya tersedia untuk sistem UNIX/Linux);

[mysqld]                        
socket = /tmp/mysql.sock # Menentukan file soket untuk komunikasi lokal antara program klien MySQL dan server (defaultnya adalah file /var/lib/mysql/mysql.sock di Linux)
port=3306 # Menentukan port yang didengarkan MsSQL
key_buffer = 384M # key_buffer adalah ukuran buffer yang digunakan untuk mengindeks blok, meningkatkan indeks yang ditanganinya dengan lebih baik (untuk semua pembacaan dan multiwrite).
                               Blok indeks di-buffer dan dibagikan oleh semua utas, dan ukuran key_buffer tergantung pada ukuran memori.
table_cache = 512 # Jumlah tabel yang terbuka untuk semua utas. Meningkatkan nilai ini meningkatkan jumlah deskriptor file yang diperlukan oleh mysqld. Ini menghindari overhead dari tabel data yang sering dibuka
sort_buffer_size = 2M # Alokasikan buffer dengan ukuran tersebut untuk setiap utas yang perlu diurutkan. Meningkatkan nilai ini mempercepat operasi ORDER BY atau GROUP BY.
                               Catatan: Memori yang dialokasikan sesuai dengan parameter ini eksklusif untuk setiap koneksi! Jika ada 100 koneksi, maka total ukuran buffer pengurutan yang sebenarnya dialokasikan adalah 100×6 = 600MB
read_buffer_size = 2M # Ukuran buffer yang dapat digunakan untuk operasi kueri baca. Seperti halnya sort_buffer_size, memori yang dialokasikan sesuai dengan parameter ini juga eksklusif untuk setiap koneksi.
query_cache_size = 32M # Menentukan ukuran buffer hasil kueri MySQL
read_rnd_buffer_size = 8M # Ubah parameter yang akan dibaca secara acak setelah mengurutkan menggunakan penunjuk baris.
myisam_sort_buffer_size =64M # Buffer diperlukan untuk menyusun ulang tabel MyISAM saat berubah
thread_concurrency = 8 # Jumlah maksimum utas bersamaan diatur sebagai jumlah CPU logis server ×2, dan jika CPU mendukung hyperthreading HT, × 2
thread_cache = 8 # #缓存可重用的线程数
lewati penguncian # menghindari penguncian eksternal MySQL, mengurangi kemungkinan kesalahan, dan meningkatkan stabilitas.
[mysqldump]
max_allowed_packet =16M # Paket informasi maksimum yang dapat dikirim antara server dan klien

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

Parameter opsional lainnya:
back_log = 384
    Menentukan jumlah koneksi yang mungkin untuk MySQL.
    Ketika utas utama MySQL menerima permintaan koneksi dalam jumlah yang sangat besar dalam waktu yang sangat singkat, parameter ini berlaku, dan utas utama membutuhkan waktu singkat untuk memeriksa koneksi dan memulai utas baru.
    Nilai parameter back_log menunjukkan berapa banyak permintaan yang dapat disimpan dalam tumpukan untuk jangka waktu yang singkat sebelum MySQL berhenti merespons permintaan baru untuk sementara.
    Jika sistem memiliki banyak koneksi dalam waktu singkat, perlu untuk meningkatkan nilai parameter ini, yang menentukan ukuran antrean mendengarkan untuk koneksi TCP/IP yang masuk.
    Mencoba menetapkan batas yang back_log lebih tinggi dari sistem operasi Anda tidak akan efektif. Nilai defaultnya adalah 50. Untuk sistem Linux, disarankan untuk mengatur bilangan bulat kurang dari 512.
max_connections = n
    Jumlah maksimum koneksi database yang dapat ditangani server MySQL secara bersamaan (pengaturan default adalah 100). Jika batas terlampaui, kesalahan Terlalu banyak koneksi akan dilaporkan
key_buffer_size = n
    Nilai RMA untuk blok indeks (pengaturan default adalah 8M), meningkatkan indeks untuk penanganan yang lebih baik (untuk semua pembacaan dan multiwrite)
record_buffer:
    Setiap utas yang melakukan pemindaian berurutan mengalokasikan buffer dengan ukuran ini ke setiap tabel yang dipindai.
    Jika Anda melakukan banyak pemindaian berurutan, Anda mungkin ingin meningkatkan nilai tersebut. Nilai defaultnya adalah 131072 (128K)
wait_timeout:
    Jumlah detik server menunggu tindakan pada koneksi sebelum mematikannya.
interactive_timeout:
    Jumlah detik server menunggu tindakan pada koneksi interaktif sebelum mematikannya.
    Pelanggan yang berinteraksi didefinisikan sebagai pelanggan yang menggunakan opsi CLIENT_INTERACTIVE untuk mysql_real_connect().
    Nilai defaultnya adalah 28800, Anda dapat mengubahnya menjadi 3600.
lewati nama-penyelesaian            
    Nonaktifkan MySQL dari resolusi DNS pada koneksi eksternal, menggunakan opsi ini menghilangkan waktu yang dibutuhkan MySQL untuk menyelesaikan DNS.
    Namun, perlu dicatat bahwa jika opsi ini diaktifkan, semua otorisasi koneksi host jarak jauh harus menggunakan metode alamat IP, jika tidak, MySQL tidak akan dapat memproses permintaan koneksi secara normal!
log-slow-queries = slow.log
    Rekam kueri lambat dan optimalkan satu per satu
Lewati Innodb
Lewati-BDB
    Tutup jenis tabel yang tidak diinginkan dan jangan tambahkan ini jika perlu
         
         
# > MENAMPILKAN VARIABEL SEPERTI '%query_cache%';
# > TAMPILKAN STATUS SEPERTI 'Qcache%';
Jika nilai Qcache_lowmem_prunes sangat besar, ini menunjukkan bahwa buffering seringkali tidak mencukupi;
Jika nilai Qcache_hits sangat besar, ini menunjukkan bahwa buffer kueri sangat sering digunakan, dan jika nilainya kecil tetapi akan memengaruhi efisiensi, maka Anda dapat mempertimbangkan untuk tidak menggunakan buffering kueri.
Jika nilai Qcache_free_blocks sangat besar, itu menunjukkan bahwa ada banyak puing-puing di buffer.


##########################################
###### max_allowed_packet      ######
##########################################
Paket komunikasi adalah pernyataan SQL tunggal yang dikirim ke server MySQL atau satu baris ke klien.
Paket maksimum yang mungkin dapat dikirim antara server MySQL 5.1 dan klien adalah 1 GB.
Ketika klien MySQL atau server mysqld menerima paket yang lebih besar dari max_allowed_packet byte, kesalahan "paket terlalu besar" dikeluarkan dan koneksi ditutup. Untuk beberapa klien, jika paket komunikasi terlalu besar, Anda mungkin mengalami kesalahan "Kehilangan koneksi ke server MySQL" selama kueri.
Baik klien maupun server memiliki variabel max_allowed_packet mereka sendiri, jadi jika Anda berencana untuk menangani paket besar, Anda harus menambahkan variabel tersebut pada klien dan server.
Jika Anda menggunakan program klien mysql, variabel max_allowed_packet defaultnya adalah 16MB. Untuk mengatur nilai yang lebih besar, Anda dapat memulai mysql dengan cara berikut:
mysql> mysql --max_allowed_packet=32M
Ini mengatur ukuran paket informasi menjadi 32MB.
Nilai max_allowed_packet default untuk server adalah 1MB. Jika server perlu memproses kueri besar, Anda dapat meningkatkan nilai ini (misalnya, jika Anda bersiap untuk memproses kolom blob besar). Misalnya, untuk mengaturnya ke 16MB, Anda dapat memulai server sebagai berikut:
mysql> mysqld --max_allowed_packet=16M

Anda juga dapat menggunakan file opsi untuk mengatur max_allowed_packet. Untuk mengatur variabel ini untuk server ke 16MB, tambahkan konten downlink ke file opsi:
[mysqld]
max_allowed_packet=16 juta
Aman untuk meningkatkan nilai variabel ini karena memori tambahan dialokasikan hanya saat diperlukan. Misalnya, mysqld akan mengalokasikan lebih banyak memori hanya jika Anda mengeluarkan kueri panjang atau mysqld harus mengembalikan baris hasil yang besar. Nilai default kecil dari variabel ini adalah tindakan pencegahan untuk menangkap paket kesalahan antara klien dan server dan untuk memastikan bahwa luapan memori tidak disebabkan oleh penggunaan paket besar yang tidak disengaja.
Jika Anda menggunakan nilai blob besar dan tidak memberikan izin mysqld untuk mengakses memori yang cukup untuk memproses kueri, Anda juga akan mengalami masalah aneh yang terkait dengan paket besar. Jika Anda menduga ini masalahnya, coba mulai tingkatkan ulimit -d 256000 dalam skrip mysqld_safe dan mulai ulang mysqld.
##########################################
##### Cara membuka dan menutup tabel database di MySQL #####
##########################################
table_cache, max_connections, dan max_tmp_tables memengaruhi jumlah maksimum file yang tetap terbuka oleh server. Jika Anda meningkatkan salah satu atau kedua nilai ini, Anda dapat mengalami batas yang diberlakukan oleh sistem operasi Anda pada jumlah deskriptor file yang dibuka setiap proses. Namun, Anda dapat meningkatkan batas pada banyak sistem. Mintalah dokumentasi OS Anda untuk mencari tahu cara melakukannya, karena metode mengubah batas sangat bervariasi dari satu sistem ke sistem lainnya.
table_cache terkait dengan max_connections. Misalnya, untuk 200 gabungan terbuka, Anda harus memiliki buffer tabel setidaknya 200 * n, di mana n adalah jumlah maksimum tabel dalam gabungan.
Cache tabel terbuka dapat ditingkatkan hingga maksimum satu table_cache (64 secara default; Ini dapat dilakukan dengan -O mysqld table_cache=#选项来改变). Tabel tidak pernah ditutup kecuali ketika cache penuh dan utas lain mencoba membuka tabel atau jika Anda menggunakan mysqladmin refresh atau mysqladmin flush-tables.
Saat cache tabel penuh, server menggunakan prosedur berikut untuk menemukan entri cache yang akan digunakan:
Tabel yang saat ini tidak digunakan dirilis, dalam urutan paling sedikit digunakan (LRU).
Jika cache penuh dan tidak ada tabel untuk dirilis, tetapi tabel baru perlu dibuka, cache harus diperbesar sementara.
Jika cache dalam status yang diperluas sementara dan tabel berubah dari aktif menjadi tidak aktif, cache ditutup dan dilepaskan dari cache.
Buka tabel untuk setiap akses bersamaan. Ini berarti bahwa jika Anda memiliki 2 utas yang mengakses tabel yang sama atau mengakses tabel dua kali dalam kueri yang sama (dengan AS), tabel perlu dibuka dua kali. Pembukaan pertama tabel apa pun menyumbang 2 deskriptor file; Setiap penggunaan tabel tambahan hanya memperhitungkan satu deskriptor file. Untuk pembukaan pertama, deskriptor tambahan digunakan untuk mengindeks file; Deskriptor ini dibagikan di antara semua utas




Mantan:Memahami direktori /etc/init.d dan skrip /etc/rc.local pada sistem Linux
Depan:Cara mengonfirmasi bahwa layanan MySQL telah dimulai di bawah Linux CentOS
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com