Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mengoptimalkan Kinerja MySQL Menggunakan MySQLTuner

Menjalankan MySQL pada pengaturan optimal untuk sumber daya tertentu membantu menangani beban server yang lebih besar dan mencegah perlambatan server. Umumnya, setelah menyetel Apache untuk menangani beban yang lebih besar, akan bermanfaat untuk menyetel MySQL ke koneksi tambahan.

Penyetelan basis data adalah topik yang luas, dan panduan ini hanya mencakup dasar-dasar pengeditan konfigurasi MySQL Anda. Database MySQL yang besar membutuhkan memori yang cukup besar. Untuk alasan ini, kami merekomendasikan penggunaan High Memory Linode untuk pengaturan tersebut.

Catatan Langkah-langkah dalam panduan ini memerlukan hak akses root. Pastikan untuk menjalankan langkah-langkah di bawah ini sebagai root atau dengan sudo awalan. Untuk informasi lebih lanjut tentang hak istimewa, lihat panduan Pengguna dan Grup kami.

Alat yang Dapat Membantu Mengoptimalkan MySQL

Untuk menentukan apakah database MySQL Anda perlu dikonfigurasi ulang, yang terbaik adalah melihat bagaimana kinerja sumber daya Anda sekarang. Ini dapat dilakukan dengan perintah atas atau dengan layanan LinodeLongview. Paling tidak, Anda harus membiasakan diri dengan penggunaan RAM dan CPU server Anda, yang dapat ditemukan dengan perintah berikut:

echo [PID]  [MEM]  [PATH] &&  ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20

MySQLTuner

Skrip MySQLTuner menilai penginstalan MySQL Anda, lalu mengeluarkan saran untuk meningkatkan kinerja dan stabilitas server Anda.

  1. Unduh skrip MySQLTuner:

     wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
    
  2. Ubah izin skrip agar dapat dieksekusi:

     chmod +x mysqltuner.pl
    
  3. Jalankan mysqltuner.pl naskah. Anda akan diminta untuk memasukkan login dan kata sandi administratif MySQL Anda:

     ./mysqltuner.pl
    
  4. Script akan mengembalikan hasil yang mirip dengan output di bawah ini:

    >>  MySQLTuner 1.4.0 - Major Hayden <[email protected]>
             >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
             >>  Run with '--help' for additional options and output filtering
            Please enter your MySQL administrative login: root
            Please enter your MySQL administrative password:
            [OK] Currently running supported MySQL version 5.5.41-0+wheezy1
            [OK] Operating on 64-bit architecture
    
            -------- Storage Engine Statistics -------------------------------------------
            [--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
            [--] Data in InnoDB tables: 1M (Tables: 11)
            [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
            [!!] Total fragmented tables: 11
    
            -------- Security Recommendations  -------------------------------------------
            [OK] All database users have passwords assigned
    
            -------- Performance Metrics -------------------------------------------------
            [--] Up for: 47s (113 q [2.404 qps], 42 conn, TX: 19K, RX: 7K)
            [--] Reads / Writes: 100% / 0%
            [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
            [OK] Maximum possible memory usage: 597.8M (60% of installed RAM)
            [OK] Slow queries: 0% (0/113)
            [OK] Highest usage of available connections: 0% (1/151)
            [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K
            [!!] Query cache efficiency: 0.0% (0 cached / 71 selects)
            [OK] Query cache prunes per day: 0
            [OK] Temporary tables created on disk: 25% (54 on disk / 213 total)
            [OK] Thread cache hit rate: 97% (1 created / 42 connections)
            [OK] Table cache hit rate: 24% (52 open / 215 opened)
            [OK] Open file limit used: 4% (48/1K)
            [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks)
            [OK] InnoDB buffer pool / data size: 128.0M/1.2M
            [OK] InnoDB log waits: 0
            -------- Recommendations -----------------------------------------------------
            General recommendations:
                Run OPTIMIZE TABLE to defragment tables for better performance
                Enable the slow query log to troubleshoot bad queries
            Variables to adjust:
                query_cache_limit (> 1M, or use smaller result sets)
    MySQLTuner menawarkan saran tentang cara meningkatkan kinerja database. Jika Anda khawatir tentang memperbarui database Anda sendiri, mengikuti saran MySQLTuner adalah salah satu cara yang lebih aman untuk meningkatkan kinerja database Anda.

Menyetel MySQL

Saat mengubah konfigurasi MySQL, waspadalah terhadap perubahan dan pengaruhnya terhadap database Anda. Bahkan ketika mengikuti instruksi program seperti MySQLTuner, yang terbaik adalah memahami prosesnya.

File konfigurasi MySQL disimpan di lokasi berikut:/etc/mysql/my.cnf .

Catatan

Sebelum memperbarui konfigurasi MySQL Anda, buat cadangan my.cnf berkas:

cp /etc/mysql/my.cnf ~/my.cnf.backup

Praktik terbaik menyarankan agar Anda membuat perubahan kecil, satu per satu, dan kemudian memantau server setelah setiap perubahan. Anda harus memulai ulang MySQL setelah setiap perubahan:

Untuk distribusi yang menggunakan systemd:

systemctl restart mysqld

Untuk distribusi dengan sistem init yang berbeda:

service mysql restart

Saat mengubah nilai di my.cnf file, pastikan baris yang Anda ubah belum dikomentari dengan pound (# ) awalan.

key_buffer

Mengubah key_buffer mengalokasikan lebih banyak memori ke MySQL, yang secara substansial dapat mempercepat database Anda, dengan asumsi Anda memiliki memori bebas. key_buffer ukuran biasanya tidak lebih dari 25 persen dari memori sistem saat menggunakan mesin tabel MyISAM, dan hingga 70 persen untuk InnoDB. Jika nilainya ditetapkan terlalu tinggi, sumber daya akan terbuang percuma.

Menurut dokumentasi MySQL, untuk server dengan 256MB (atau lebih) RAM dengan banyak tabel, pengaturan 64M direkomendasikan. Server dengan RAM 128MB dan tabel yang lebih sedikit dapat diatur ke 16M, nilai default. Situs web dengan sumber daya dan tabel yang lebih sedikit dapat menetapkan nilai ini lebih rendah.

max_allowed_packet

Parameter ini memungkinkan Anda mengatur ukuran maksimum paket yang dapat dikirim. Paket adalah status SQL tunggal, satu baris dikirim ke klien, atau log dikirim dari database sumber ke replika. Jika Anda tahu bahwa server MySQL Anda akan memproses paket besar, yang terbaik adalah meningkatkannya ke ukuran paket terbesar Anda. Jika nilai ini disetel terlalu kecil, Anda akan menerima kesalahan di log kesalahan Anda.

thread_stack

Nilai ini berisi ukuran tumpukan untuk setiap utas. MySQL mempertimbangkan nilai default thread_stack variabel yang cukup untuk penggunaan normal; namun, jika terjadi kesalahan yang berkaitan dengan thread_stack dicatat, ini dapat ditingkatkan.

thread_cache_size

Jika thread_cache_size "dimatikan" (diatur ke 0), maka setiap koneksi baru yang dibuat memerlukan utas baru yang dibuat untuk itu. Ketika koneksi terlepas, utas dihancurkan. Jika tidak, nilai ini menetapkan jumlah utas yang tidak digunakan untuk disimpan dalam cache hingga perlu digunakan untuk koneksi. Umumnya pengaturan ini memiliki sedikit pengaruh pada kinerja, kecuali jika Anda menerima ratusan koneksi per menit, pada saat itu nilai ini harus ditingkatkan sehingga sebagian besar koneksi dapat dibuat pada utas yang di-cache.

max_connections

Parameter ini menetapkan jumlah maksimum bersamaan koneksi. Sebaiknya pertimbangkan jumlah maksimum koneksi yang Anda miliki di masa lalu sebelum menyetel nomor ini, jadi Anda akan memiliki penyangga antara nomor atas dan max_connections nilai. Catatan, ini tidak menunjukkan jumlah maksimum pengguna di situs web Anda sekaligus; melainkan menunjukkan jumlah maksimum pengguna yang membuat permintaan secara bersamaan.

table_cache

Nilai ini harus dijaga lebih tinggi dari open_tables Anda nilai. Untuk menentukan nilai ini gunakan:

1
SHOW STATUS LIKE 'open%';

Informasi Lebih Lanjut

Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.

  • Perpustakaan Dokumentasi MySQL
  • Parameter Server Penyesuaian MySQL
  • MySQLTuner

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengamankan Server MySQL/MariaDB

  2. Failover &Failback di Amazon RDS

  3. Kinerja operator MySQL IN pada jumlah nilai (besar?)

  4. JSON_PRETTY() – Memformat Dokumen JSON agar Lebih Mudah Dibaca di MySQL

  5. Peringatan:Tidak dapat mengubah informasi tajuk - tajuk sudah dikirim karena kesalahan