informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
https://blog.csdn.net/weixin_37519752/artikel/detail/138728036
1. Keuntungan
Skalabilitas tulis: Kedua node dapat menangani operasi tulis, sehingga meningkatkan skalabilitas operasi tulis.
Ketersediaan tinggi: Jika ada node yang gagal, node lainnya masih dapat terus menyediakan layanan, termasuk operasi tulis.
Failover: Tidak diperlukan mekanisme failover yang rumit karena kedua node aktif.
2. Kekurangan
Konsistensi data: Mekanisme deteksi dan penyelesaian konflik yang kompleks diperlukan untuk menjaga konsistensi data.
Persyaratan jaringan: Ada persyaratan tinggi untuk stabilitas dan latensi jaringan, karena sinkronisasi waktu nyata antar node sensitif terhadap kualitas jaringan.
Overhead tambahan: Overhead jaringan dan I/O disk tambahan yang disebabkan oleh sinkronisasi waktu nyata.
3. Skenario yang berlaku
Aplikasi terdistribusi: Aplikasi yang memerlukan kemampuan menulis di lokasi geografis berbeda.
Beban tulis tinggi: Skenario di mana beban tulis perlu disebarkan untuk meningkatkan kinerja.
Persyaratan data waktu nyata: Aplikasi yang memerlukan sinkronisasi data waktu nyata di beberapa node.
Satu master dan satu budak, atau satu master dan beberapa budak yang didukung oleh mysql5.7 atau lebih tinggi
1. Keuntungan
Redundansi data: Menyediakan cadangan data panas, mengurangi risiko kehilangan data.
Peningkatan kinerja: Satu master dan beberapa budak, pengguna berbeda membaca dari database berbeda, dan kinerja ditingkatkan.
Skalabilitas: Ketika lalu lintas meningkat, server budak dapat dengan mudah ditambahkan tanpa mempengaruhi penggunaan sistem.
Penyeimbangan beban: Satu master dan beberapa budak setara dengan berbagi tugas host dan melakukan penyeimbangan beban.
2. Kekurangan
Latensi data: Karena replikasi tidak sinkron, terdapat risiko latensi replikasi data.
Peningkatan kompleksitas: Peningkatan kompleksitas sistem memerlukan lebih banyak pemeliharaan dan pengelolaan.
Konsumsi sumber daya tambahan: Sumber daya perangkat keras tambahan diperlukan untuk menyebarkan server budak.
Dampak kinerja tulis: Semua operasi penulisan dilakukan di server master dan mungkin menjadi penghambat kinerja.
3. Skenario yang berlaku
Pemisahan baca dan tulis: cocok untuk skenario di mana terdapat lebih banyak operasi baca daripada operasi tulis.
Pencadangan Data: Digunakan untuk pencadangan data secara real-time untuk mencegah kehilangan data.
Persyaratan ketersediaan tinggi: aplikasi penting yang perlu memastikan kelangsungan layanan
1. Gunakan indeks
Indeks adalah kunci untuk kueri data yang efisien dalam tabel.Di MySQL, Anda dapat menggunakan indeks B-Tree atau indeks hash untuk mempercepat operasi kueri
Contoh:
CREATE INDEX index_name ON table_name (column1, column2, ...);
2. Optimalkan pernyataan kueri
Mengoptimalkan kueri dapat meningkatkan kinerja MySQL.Waktu eksekusi kueri dapat dikurangi melalui pernyataan kueri, indeks, dan mekanisme caching yang sesuai, serta pemindaian tabel penuh dan operasi data yang tidak perlu dapat dihindari.
Contoh:
# 通过使用索引和合适的查询语句
SELECT * FROM table_name WHERE column1 = "value" AND column2 = "value";
# 避免使用通配符查询,可以使用索引来加速查询
SELECT * FROM table_name WHERE column1 LIKE "value%";
# 避免在查询条件中使用函数,函数会导致索引失效
SELECT * FROM table_name WHERE DATE(column1) > "2021-01-01";
3. Optimasi cache
Mekanisme caching MySQL dapat meningkatkan kinerja kueri. Dengan mengatur cache kueri dan cache sistem dengan tepat, Anda dapat mengurangi operasi IO disk dan mempercepat eksekusi kueri.Gunakan cache kueri MySQL, kumpulan buffer InnoDB, dll.
# 启用查询缓存
query_cache_type = 1
query_cache_size = 64M
4. Tabel partisi
Ketika jumlah data sangat besar, Anda dapat mempertimbangkan untuk menggunakan partisi dan tabel untuk meningkatkan kinerja kueri. Partisi membagi data menjadi bagian-bagian logis yang lebih kecil, yang masing-masing dapat ditanyakan dan dipelihara secara independen. Pemisahan tabel adalah membagi tabel besar menjadi beberapa tabel kecil, dan setiap tabel kecil menyimpan sebagian data.
# 分区
CREATE TABLE table_name (
...
)
PARTITION BY RANGE (column_name) (
PARTITION p1 VALUES LESS THAN (value1),
PARTITION p2 VALUES LESS THAN (value2),
...
)
# 分表
CREATE TABLE table_name (
...
)
PARTITION BY HASH (column_name) PARTITIONS 4;
5. Penyetelan parameter
https://blog.51cto.com/u_12196/6967500
https://blog.51cto.com/u_13259/6936668
6. Manajemen kumpulan koneksi
Pengumpulan koneksi adalah teknologi untuk mengelola koneksi database yang secara efektif dapat mengurangi biaya pembuatan dan penghancuran koneksi. Dalam lingkungan konkurensi tinggi, kumpulan koneksi dapat membuat sejumlah koneksi terlebih dahulu dan menyimpannya di kumpulan koneksi. Ketika permintaan baru masuk, koneksi dapat diperoleh dari kumpulan koneksi tanpa perlu membuat ulang koneksi setiap saat. Hal ini dapat sangat meningkatkan kemampuan pemrosesan secara bersamaan.
7. Optimalisasi perangkat keras:
Gunakan perangkat keras berkinerja tinggi, seperti CPU berkecepatan tinggi, memori berkapasitas besar, dan disk berkecepatan tinggi, untuk meningkatkan kemampuan pemrosesan basis data