Berharap untuk mendapatkan umpan balik tentang topik mengoptimalkan dan tetap di atas kinerja sebagai database WordPress tumbuh ... untuk melukis gambar .... katakanlah Anda memiliki situs MU WordPress / Buddypress yang dimulai pada sekitar 150kb (vanilla install) ... seiring waktu pengguna menambahkan blog, forum, posting, dan komentar dan basis data tumbuh menjadi 5mb .... kemudian 10mb tahun berikutnya .... Juga dengan asumsi bahwa kontrol hosting adalah pengaturan colocated standar seperti Cpanel atau Plesk.
- Pada titik apa jumlah entri dalam database memengaruhi kinerja situs web front-end?
- Apa yang dapat Anda lakukan sebagai pengelola situs web agar ini berjalan dengan lancar seiring pertumbuhan basis data Anda?
- Apa yang dapat Anda harapkan dari segi kinerja setelah tahun ke-5 ketika basis data Anda 500 - 600mb besar?
Terima kasih atas umpan balik yang Anda miliki tentang menjaga kapal tetap ketat.
Salam,
S.
mysql
database
optimization
Simon
sumber
sumber
Jawaban:
Pertanyaan spesifik Anda:
1) Tidak ada batasan ketat untuk "jumlah entri" yang mungkin dimiliki oleh DB sebelum kinerja terpengaruh. Kinerja sangat tergantung pada perangkat keras dan konfigurasi Anda seperti halnya pada ukuran dan struktur DB.
2) Jika Anda khawatir tentang skalabilitas lapisan DB Anda, Anda bisa menjalankannya dalam sebuah cluster, atau pada kotak cloud atau VPS yang memungkinkan untuk mengubah ukuran. Jika DB Anda mulai menjadi lamban, Anda dapat menambah ukuran (meskipun biasanya dengan biaya tambahan). Opsi-opsi ini menambah biaya, tetapi benar-benar cara terbaik untuk memastikan skalabilitas DB.
3) Ini sangat tergantung pada pengaturan hosting Anda, dan arsitektur DB Anda. Tetapi secara umum (kecuali jika Anda menggunakan kotak yang sangat murah), saya tidak akan khawatir tentang database WordPress 30MB. WordPress melakukan pekerjaan yang baik dalam mengindeks tabel, dan bahkan konfigurasi OOB MySQL harus dengan mudah menangani pertanyaan WordPress pada DB ukuran ini. Ketika Anda naik ke Gigabytes - saat itulah Anda mungkin perlu melihat dengan serius opsi pengoptimalan kinerja.
Secara umum:
Jika Anda khawatir tentang kinerja, berkonsentrasilah pada penyetelan pengaturan MySQL yang ada, dan / atau menyiapkan lapisan cache. Caching dapat sangat mengurangi beban pada MySQL (terutama dengan situs WordPress, karena mereka umumnya melakukan sejumlah besar permintaan DB).
Jika setelah Anda menyetel MySQL dengan benar dan mengatur lapisan caching yang layak, Anda masih khawatir akan melampaui konfigurasi perangkat keras Anda, Anda dapat melembagakan kebijakan menghapus konten setelah jumlah waktu x.
Tidak satu pun dari hal ini khusus untuk WordPress. Dan saya tidak yakin bahwa pertanyaan memiliki jawaban yang tidak berlaku untuk situs web atau aplikasi apa pun yang berjalan pada tumpukan LAMP. Tapi mungkin orang lain memiliki saran mengenai struktur tabel MU atau trik DB khusus WP lainnya ... Saya tidak tahu.
sumber
Secara ketat dari MySQL Point-of-View, saya punya saran tentang cara meningkatkan caching data / indeks untuk MySQL Instance.
Perlu diingat bahwa ada dua Mesin Penyimpanan utama untuk MySQL
Mekanisme caching mereka berbeda. Ada sesuatu yang dapat Anda lakukan untuk menyetel Mesin Penyimpanan pilihan Anda.
MyISAM
MyISAM hanya menyimpan halaman indeks. Tidak pernah melakukan cache data. Anda dapat melakukan dua hal untuk meningkatkan I / O untuk tabel MyISAM.
Peningkatan MyISAM # 1
Setiap tabel MyISAM yang memiliki kolom VARCHAR dapat dikonversi secara internal ke CHAR tanpa menyentuh desain awal. Misalkan Anda memiliki tabel bernama mydb.mytable dan Anda ingin meningkatkan I / O untuk itu, lakukan hal berikut di atasnya:
Ini akan meningkatkan ukuran tabel 60% -100% tetapi akan menghasilkan peningkatan kinerja 20-30% pada I / O tanpa mengubah apa pun . Saya menulis tentang ini sebelumnya di DBA StackExchange:
Peningkatan MyISAM # 2
Anda perlu meningkatkan Cache Kunci MyISAM (seperti ukuran oleh key_buffer_size ). Jalankan kueri ini, silakan:
Ini akan menunjukkan kepada Anda key_buffer_size yang ideal berdasarkan dataset Anda saat ini.
InnoDB
InnoDB menyimpan data dan indeks. Jika Anda mengonversi semua data Anda ke InnoDB dan saat ini menjalankan WordPress dari semua basis data InnoDB, Anda perlu mengukur Pool Penyangga InnoDB Anda (seukuran dengan innodb_buffer_pool_size ). Jalankan kueri ini, silakan:
Ini akan menunjukkan kepada Anda key_buffer_size yang ideal berdasarkan dataset Anda saat ini.
Proyeksi
Jika Anda memproyeksikan bahwa dataset Anda akan tumbuh 20 kali lebih banyak, cukup gandakan apa yang direkomendasikan oleh query ini pada 20. Misalkan dataset MyISAM Anda adalah 15MB dan 3MB adalah jumlah indeks Anda. Jika Anda memperkirakan bahwa Anda akan memiliki data 20 kali lebih banyak, atur key_buffer_size ke 60MB seperti ini di /etc/my.cnf:
kemudian restart MySQL. Hal yang sama berlaku untuk Pool Buffer InnoDB.
Jika semua data Anda adalah InnoDB, Anda perlu melakukan Pembersihan penuh atas infrastruktur InnoDB Anda yang saya posting di StackOverflow .
sumber
Ketika pertanyaan mulai mengenai batas sumber daya dari akun hosting Anda.
Mengawasi penggunaan sumber daya. Ambil langkah-langkah untuk meningkatkan sumber daya dan / atau mengoptimalkan penggunaan.
Seharusnya tidak ada perubahan dalam kinerja pada database kecil itu.
Jika Anda berharap situs Anda tumbuh selambat itu, maka Anda punya banyak waktu untuk mempelajari cara mengelola pertumbuhan.
sumber