Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk rekomendasi daftar periksa Efisiensi Performa Azure Well-Architected Framework ini:
| PE:08 | Optimalkan performa data. Optimalkan penyimpanan data, partisi, dan indeks untuk penggunaan yang dimaksudkan dan aktual dalam beban kerja. |
|---|
Panduan ini menjelaskan rekomendasi untuk mengoptimalkan performa data. Mengoptimalkan performa data adalah tentang menyempurnakan efisiensi tempat beban kerja memproses dan menyimpan data. Setiap operasi beban kerja, transaksi, atau komputasi biasanya bergantung pada pengambilan, pemrosesan, dan penyimpanan data yang cepat dan akurat. Ketika performa data dioptimalkan, beban kerja berjalan dengan lancar. Performa data yang disusupi menciptakan efek domino dari efisiensi performa yang buruk. Kegagalan untuk mengoptimalkan performa data menghasilkan penundaan respons, latensi tinggi, dan skalabilitas yang dikurasi. Ini membahmari efisiensi seluruh beban kerja.
Definisi
| Istilah | Definition |
|---|---|
| Teori CAP | Kerangka kerja yang digunakan untuk mempertimbangkan konsistensi, ketersediaan, dan toleransi partisi untuk membantu menjelaskan tradeoff dalam konsistensi data. |
| Pembangunan ulang indeks database | Aktivitas pemeliharaan yang menghilangkan dan membuat ulang indeks. |
| Reorganisasi indeks database | Aktivitas pemeliharaan yang mengoptimalkan indeks database saat ini. |
| Penyimpanan data | Sumber daya yang menyimpan data seperti database, penyimpanan objek, atau berbagi file. |
| Konsistensi akhir | Model sinkronisasi data yang memungkinkan inkonsistensi sementara dalam replika data sebelum akhirnya disinkronkan. |
| Index | Struktur database yang menyediakan akses cepat ke item. |
| Pemrosesan analitik online (OLAP) | Teknologi yang mengatur database bisnis besar, mendukung analisis kompleks, dan melakukan kueri analitik yang kompleks tanpa memengaruhi sistem transaksi. |
| Pemrosesan transaksi online (OLTP) | Teknologi yang mencatat interaksi bisnis saat terjadi dalam operasi organisasi sehari-hari. |
| Konkurensi optimis | Pendekatan untuk memperbarui database yang menggunakan rekam jepret untuk membuat pembaruan alih-alih mekanisme penguncian tradisional, meningkatkan performa dan skalabilitas. |
| Teori PACELC | Kerangka kerja yang digunakan untuk mempertimbangkan toleransi partisi, ketersediaan, konsistensi, dan latensi untuk membantu menjelaskan tradeoff dalam konsistensi data. |
| Partitioning | Proses pembagian data secara fisik menjadi penyimpanan data terpisah. |
| Penyetelan kueri | Proses yang mengoptimalkan kecepatan kueri database. |
| Replika baca | Salinan langsung database utama yang memungkinkan Anda membongkar lalu lintas baca dari database tulis. |
Untuk mengoptimalkan penggunaan data, pastikan bahwa penyimpanan data, partisi, dan indeks dioptimalkan untuk penggunaan yang dimaksudkan dan untuk penggunaan aktualnya dalam beban kerja. Penggunaan data yang dioptimalkan dapat meningkatkan performa kueri, mengurangi konsumsi sumber daya, dan meningkatkan efisiensi sistem secara keseluruhan. Pertimbangkan strategi berikut:
Data profil. Pahami data Anda dan pastikan model data Anda sangat cocok untuk beban kerja Anda. Pertimbangkan faktor-faktor seperti normalisasi data, strategi pengindeksan, dan teknik partisi. Untuk pengambilan data yang efisien, pastikan Anda memilih jenis data yang sesuai, menentukan hubungan antar entitas, dan menentukan strategi pengindeksan yang optimal.
Menyempurnakan konfigurasi penyimpanan data Anda. Konfigurasikan infrastruktur penyimpanan data Anda agar selaras dengan persyaratan beban kerja Anda. Pilih teknologi penyimpanan yang sesuai, misalnya database relasional, database NoSQL, dan gudang data. Optimalkan pengaturan penyimpanan, seperti ukuran buffer, mekanisme penembolokan, dan pemadatan.
Optimalkan performa kueri. Menganalisis dan mengoptimalkan kueri yang berjalan dalam beban kerja. Gunakan teknik seperti pengoptimalan kueri, pengindeksan, dan penembolokan. Untuk mengidentifikasi hambatan, gunakan rencana kueri dan alat pemantauan performa, lalu lakukan peningkatan yang diperlukan.
Memantau dan menyetel sistem secara teratur. Terus memantau performa beban kerja Anda dan melakukan iterasi pada konfigurasi penyimpanan data dan pengoptimalan kueri. Berdasarkan praktik terbaik penyetelan performa, analisis metrik sistem, identifikasi area peningkatan, dan terapkan perubahan.
Data profil
Pembuatan profil data melibatkan pemeriksaan data dari sumber dan mengumpulkan informasi tentang data tersebut. Tujuannya adalah untuk memahami kualitas, struktur, dan karakteristik data beban kerja. Proses ini memungkinkan identifikasi masalah seperti nilai yang hilang, duplikat, format yang tidak konsisten, dan anomali lainnya. Untuk pembuatan profil data yang efektif, pertimbangkan strategi berikut:
Pahami struktur data. Periksa struktur data Anda, termasuk tabel, kolom, dan hubungan. Tentukan jenis data, panjang, dan batasan yang diterapkan ke setiap kolom. Evaluasi struktur data membantu Anda memahami bagaimana data diatur dan hubungannya dengan elemen data lainnya.
Menganalisis volume data. Menilai volume data Anda untuk memahami ukuran keseluruhan dan pola pertumbuhan. Tentukan jumlah rekaman atau dokumen dan ukuran tabel atau koleksi individual. Informasi ini membantu Anda memperkirakan persyaratan penyimpanan dan mengidentifikasi masalah skalabilitas.
Mengidentifikasi hubungan data. Jelajahi hubungan antara elemen data, seperti hubungan kunci utama dan asing. Pahami bagaimana data tersambung, sehingga Anda dapat menentukan bagaimana perubahan dalam satu tabel atau dokumen dapat memengaruhi data terkait.
Menilai kualitas data. Evaluasi kualitas data Anda dengan memeriksa faktor-faktor seperti kelengkapan, akurasi, konsistensi, dan keunikan. Identifikasi anomali data, nilai yang hilang, atau rekaman duplikat yang mungkin memengaruhi integritas data dan performa kueri. Langkah ini membantu Anda mengidentifikasi area untuk pembersihan dan peningkatan data.
Menangkap distribusi data. Analisis distribusi nilai dalam setiap kolom untuk menentukan pola data. Identifikasi nilai, outlier, dan penyimpangan data yang sering dan langka. Untuk mengoptimalkan performa kueri, pilih strategi pengindeksan yang sesuai dan teknik pengoptimalan kueri berdasarkan distribusi.
Memantau performa data
Pemantauan performa data adalah praktik pelacakan penyimpanan data, partisi, dan indeks secara konsisten secara real time. Ini melibatkan pengumpulan dan analisis metrik performa khusus untuk operasi data, menggunakan alat yang disesuaikan untuk solusi pemantauan tingkat sistem, khusus database, atau pihak ketiga. Pemantauan performa data yang efektif memungkinkan Anda mengidentifikasi dan mengurangi potensi hambatan secara proaktif, memastikan bahwa proses dan tugas terkait data efisien. Untuk memantau performa data, pertimbangkan strategi berikut:
Mengumpulkan metrik khusus data. Kumpulkan metrik utama yang terkait langsung dengan performa data. Metrik ini mencakup waktu respons kueri, throughput data, I/O disk yang terkait dengan akses data, dan waktu pemuatan partisi data tertentu.
Siapkan pemberitahuan data. Siapkan pemberitahuan khusus untuk metrik data. Gunakan ambang batas atau anomali yang telah ditentukan sebelumnya dalam metrik ini untuk memicu pemberitahuan. Pemberitahuan memungkinkan Anda menerima pemberitahuan saat metrik performa melebihi rentang yang dapat diterima atau menampilkan perilaku abnormal. Misalnya, jika kueri database membutuhkan waktu lebih lama dari yang diharapkan atau jika throughput data turun secara signifikan, itu akan memicu pemberitahuan. Anda dapat menyiapkan pemberitahuan ini menggunakan alat pemantauan khusus atau skrip kustom.
Mendiagnosis masalah performa data. Tinjau metrik data yang dikumpulkan secara teratur untuk menentukan potensi penyempitan performa atau degradasi dalam operasi data. Alat visualisasi atau dasbor dapat sangat berharga dalam proses ini, membantu menyoroti tren, penyempitan, dan outlier dalam performa data. Setelah diidentifikasi, pelajari akar penyebab masalah ini dan susun langkah-langkah remediasi yang sesuai.
Data partisi
Pemartisian melibatkan pembagian himpunan data besar atau beban kerja volume tinggi menjadi subset yang lebih kecil dan dapat dikelola. Pemartisian meningkatkan efisiensi performa data dengan mendistribusikan beban kerja dan meningkatkan pemrosesan paralel. Ini juga memastikan akses data yang lebih efektif berdasarkan kebutuhan tertentu dan pola kueri. Anda dapat mempartisi data secara vertikal atau horizontal (juga disebut sharding).
| Strategi | Definition | Example | Kasus penggunaan |
|---|---|---|---|
| Pemartisian vertikal | Bagi tabel menjadi tabel yang lebih kecil dengan memilih kolom atau bidang tertentu untuk setiap partisi. Setiap partisi mewakili subset data lengkap. | Jika Anda memiliki tabel dengan kolom A, B, C, dan D, Anda bisa membuat satu tabel dengan kolom A dan B dan tabel lainnya dengan kolom C dan D. | - Tabel berisi banyak kolom, tetapi kueri tidak mengakses semua kolom bersama-sama. - Beberapa kolom lebih besar dari yang lain dan memisahkannya dapat meningkatkan performa I/O. - Bagian data yang berbeda memiliki pola akses yang beragam. |
| Pemartisian horizontal | Pisahkan data berdasarkan baris atau rentang nilai (juga dikenal sebagai sharding). Setiap partisi berisi subset baris dengan karakteristik serupa. | Jika Anda memiliki tabel dengan baris 1 hingga 1000, Anda mungkin membuat satu partisi dengan baris 1 hingga 500 dan yang lain dengan baris 501 hingga 1000. | - Himpunan data terlalu besar untuk satu lokasi atau server. - Data diakses berdasarkan rentang atau filter tertentu. - Perlu mendistribusikan beban kerja di seluruh simpul atau server fisik untuk meningkatkan performa. |
Untuk mempartisi data Anda, pertimbangkan langkah-langkah berikut:
Menganalisis data dan kueri. Analisis pola data dan kueri untuk mengidentifikasi strategi pemartisian atau sharding yang sesuai. Pahami sifat data, pola akses, dan persyaratan distribusi.
Tentukan kunci. Pilih kunci partisi atau sharding untuk mendistribusikan data di seluruh partisi atau pecahan. Pilih kunci dengan hati-hati berdasarkan karakteristik data dan persyaratan kueri.
Tentukan logika. Tentukan logika partisi atau sharding berdasarkan kunci yang dipilih. Pertimbangkan untuk membalik data menjadi rentang, menerapkan algoritma hashing, atau menggunakan teknik pemartisian lainnya.
Konfigurasikan infrastruktur. Konfigurasikan sistem database untuk mendukung partisi atau sharding. Pertimbangkan untuk membuat infrastruktur yang diperlukan, menentukan partisi atau pecahan, dan mengonfigurasi distribusi data.
Untuk informasi selengkapnya, lihat Panduan pemartisian data.
Mengoptimalkan kueri database
Mengoptimalkan kueri database menyempurnakan kueri menggunakan teknik seperti petunjuk indeks dan penembolokan. Penyesuaian ini meningkatkan efisiensi dan kecepatan pengambilan data. Akibatnya, database memiliki beban kerja yang lebih ringan, sumber daya bekerja lebih efektif, dan pengguna menikmati interaksi yang lebih lancar. Untuk mengoptimalkan kueri database, pertimbangkan strategi berikut:
Menulis ulang kueri. Tinjau dan analisis kueri kompleks untuk mengidentifikasi peluang untuk menulis ulang kueri tersebut. Pertimbangkan untuk merestrukturisasi logika kueri, menghilangkan operasi redundan, atau menyederhanakan sintaks kueri.
Hindari masalah kueri N+1. Minimalkan jumlah perjalanan pulang pergi ke database dengan menggunakan gabungan dan pengambilan batch untuk mengambil data terkait secara efisien.
Menyusun ulang gabungan. Evaluasi rencana kueri dan pertimbangkan untuk mengatur ulang urutan gabungan untuk meminimalkan jumlah baris di setiap operasi gabungan. Urutan di mana Anda menggabungkan tabel dapat memengaruhi performa kueri.
Gunakan petunjuk indeks. Gunakan petunjuk indeks sehingga mesin database dapat menentukan penggunaan indeks saat menjalankan kueri. Petunjuk indeks memandu pengoptimal untuk memilih indeks yang paling tepat.
Kueri cache. Simpan hasil kueri yang sering dijalankan dalam memori. Penembolokan kueri menghilangkan kebutuhan untuk menjalankan kueri yang sama berulang kali, dan mengurangi overhead pemrosesan kueri.
Optimalkan penguncian. Hindari petunjuk kunci yang tidak perlu atau ketat dalam kueri. Strategi penguncian yang efisien dapat meningkatkan performa dan konkurensi kueri. Terapkan mekanisme penguncian yang dioptimalkan yang disediakan sistem database. Menganalisis dan menyesuaikan tingkat isolasi untuk menyeimbangkan konsistensi data dan performa kueri.
Pantau dan setel. Pantau metrik performa kueri, seperti runtime, pemanfaatan sumber daya, dan throughput kueri. Gunakan alat pembuatan profil database dan fungsionalitas pemantauan untuk mengidentifikasi kueri berkinerja buruk. Mengevaluasi dan menyempurnakan rencana kueri berdasarkan data performa yang dikumpulkan. Analisis rencana kueri dan statistik tunggu untuk mengidentifikasi hambatan. Gunakan informasi tersebut untuk mengoptimalkan performa kueri.
Mengoptimalkan performa indeks
Indeks meningkatkan kecepatan pengambilan data dengan memungkinkan database menemukan data dengan cepat menggunakan kolom atau bidang tertentu. Saat Anda mengoptimalkan indeks ini, pengurutan dan operasi gabungan menjadi lebih efisien, yang mengarah ke kueri yang lebih cepat. Indeks yang dioptimalkan dengan baik dipotong pada operasi I/O disk yang diperlukan untuk kueri. Menghapus indeks yang tidak perlu atau berlebihan juga membebaskan ruang penyimpanan yang berharga. Untuk mengoptimalkan performa indeks, pertimbangkan strategi berikut:
Menganalisis pola kueri. Pahami pola kueri yang berjalan di database Anda. Identifikasi kueri yang sering berjalan dan mungkin menurunkan performa. Analisis pola kueri untuk menentukan indeks mana yang bermanfaat untuk mengoptimalkan performa.
Mengevaluasi indeks yang ada. Tinjau indeks yang sudah ada di database Anda. Mengevaluasi penggunaan, efek performa, dan relevansinya dengan pola kueri. Identifikasi indeks redundan atau tidak digunakan yang dapat Anda hapus untuk meningkatkan performa tulis dan mengurangi overhead penyimpanan.
Identifikasi kolom untuk pengindeksan. Identifikasi kolom yang sering digunakan di tempat, gabungkan, dan urutkan berdasarkan klausa kueri Anda. Kolom ini adalah kandidat potensial untuk pengindeksan karena dapat mengaktifkan pengambilan data yang cepat.
Pilih jenis indeks yang sesuai. Pilih jenis indeks yang sesuai berdasarkan sistem database Anda. Opsi umum termasuk indeks b-tree untuk kueri kesetaraan dan rentang, indeks hash untuk kueri pencocokan yang tepat, dan indeks teks lengkap untuk operasi pencarian teks. Pilih jenis indeks yang paling sesuai dengan persyaratan kueri Anda.
Pertimbangkan urutan kolom indeks. Saat Anda membuat indeks komposit, atau indeks dengan beberapa kolom, pertimbangkan urutan kolom. Tempatkan kolom yang paling sering digunakan dalam kueri di awal indeks. Urutan kolom membantu memastikan bahwa beban kerja Anda secara efektif menggunakan indeks untuk berbagai kueri.
Seimbangkan ukuran indeks. Hindari membuat indeks pada kolom dengan kardinalitas rendah, atau kolom yang memiliki jumlah nilai berbeda yang rendah. Indeks tersebut dapat tidak efisien dan meningkatkan ukuran database Anda. Sebagai gantinya, kolom indeks yang memiliki selektivitas tinggi.
Pertahankan penggunaan indeks. Terus memantau penggunaan dan performa indeks Anda. Cari peluang untuk membuat indeks baru atau memodifikasi indeks yang ada berdasarkan perubahan pola kueri atau persyaratan performa. Hapus atau perbarui indeks yang tidak lagi bermanfaat. Indeks memiliki overhead pemeliharaan. Saat data berubah, indeks dapat memecah dan memengaruhi performa. Lakukan tugas pemeliharaan indeks secara teratur, seperti membangun ulang atau mengatur ulang indeks, untuk memastikan performa optimal.
Uji dan validasi. Sebelum Anda merevisi indeks di lingkungan produksi, lakukan pengujian dan validasi menyeluruh. Mengukur efek performa revisi indeks dengan menggunakan beban kerja yang representatif. Verifikasi peningkatan terhadap tolok ukur yang telah ditentukan sebelumnya.
Tradeoff: Indeks pohon B mungkin memiliki overhead penyimpanan yang tinggi, dan kueri pencocokan yang tepat mungkin lambat. Indeks hash tidak cocok untuk kueri rentang atau operator perbandingan. Indeks teks lengkap mungkin memiliki persyaratan penyimpanan yang tinggi, dan kueri data nontekstual mungkin lambat.
Pertimbangkan pemadatan data
Kompresi data adalah proses pengurangan ukuran data untuk mengoptimalkan ruang penyimpanan dan meningkatkan efisiensi performa beban kerja. Data terkompresi membutuhkan lebih sedikit ruang penyimpanan dan lebih sedikit bandwidth untuk transmisi, yang menghasilkan transfer data cepat. Anda akan memadatkan data untuk mengurangi jejak penyimpanan Anda dan meningkatkan waktu akses data. Saat Anda memadatkan data, ini mengurangi operasi I/O dan persyaratan bandwidth jaringan.
Kompresi tanpa kehilangan dan kompresi yang hilang adalah algoritma kompresi data. Algoritma kompresi tanpa kehilangan mengurangi ukuran data tanpa kehilangan informasi apa pun. Algoritma kompresi lossy mencapai rasio kompresi tinggi dengan menghapus informasi yang kurang penting atau redundan.
Tradeoff: Untuk mengompresi dan mendekompresi data, Anda memerlukan sumber daya komputasi, seperti CPU dan memori. Semakin banyak data yang Anda kompres, semakin banyak sumber daya yang Anda butuhkan.
Mengarsipkan dan menghapus menyeluruh data
Pengarsipan dan pembersihan adalah strategi yang menyederhanakan penyimpanan data. Pengarsipan merelokasi data yang lebih lama dan kurang sering diakses ke penyimpanan yang lebih hemat biaya. Menghapus data secara permanen menghapus data redundan. Mereka berkontribusi pada efisiensi performa dengan mengurangi volume data, meningkatkan kecepatan akses data, dan mengurangi waktu pencadangan dan pemulihan:
Mengurangi volume data: Lebih sedikit data berarti waktu pemrosesan yang lebih cepat, memastikan respons cepat terhadap permintaan pengguna.
Meningkatkan kecepatan akses data: Himpunan data yang dipangkas memungkinkan kueri swifter dan pengambilan data, mengoptimalkan respons sistem.
Mengurangi waktu pencadangan dan pemulihan: Himpunan data yang lebih kecil mempercepat proses pencadangan dan pemulihan, meminimalkan waktu henti dan memastikan performa yang konsisten.
Pengarsipan dan pembersihan berperan dalam menjaga efisiensi performa puncak dalam sistem berbasis data.
Mengoptimalkan beban penyimpanan
Mengoptimalkan beban penyimpanan berarti menyederhanakan permintaan ke sistem penyimpanan. Ini membantu menghilangkan permintaan yang tidak perlu. Ini juga meningkatkan pengambilan data dan mencegah penyimpanan yang luar biasa. Mengoptimalkan beban penyimpanan memastikan sistem penyimpanan tetap responsif terhadap permintaan yang sah dan mempertahankan performa puncak. Terapkan strategi untuk mengurangi beban pemrosesan pada penyimpanan data. Untuk mengoptimalkan beban penyimpanan data, pertimbangkan strategi berikut:
Menggunakan penembolokan
Penembolokan menyimpan data yang umum diakses di area penyimpanan akses cepat, membuat pengambilan data lebih cepat daripada menariknya dari sumber utama. Teknik ini meningkatkan performa data dengan mengurangi waktu akses dan menghindari pengambilan data berulang. Penembolokan meningkatkan kecepatan baca dan waktu respons pengguna, terutama untuk data yang sering diakses Metode ini paling efektif pada data statis atau data yang jarang berubah.
Untuk memastikan efisiensi penembolokan yang optimal, pertimbangkan faktor-faktor seperti kebijakan kedaluwarsa, strategi pengeluaran, dan pengelolaan ukuran cache. Sesuaikan pengaturan, seperti waktu hidup (TTL), untuk performa optimal. Untuk menggunakan cache untuk mengoptimalkan beban penyimpanan, pertimbangkan strategi berikut:
Penembolokan dalam memori: Lakukan penembolokan dalam memori untuk menyimpan data yang sering diakses dalam memori untuk pengambilan cepat. Anda dapat menggunakan teknik ini untuk data aplikasi yang mahal untuk dihitung atau diambil dari database. Penembolokan dalam memori berguna untuk data yang sering Anda baca tetapi tidak sering berubah.
Penembolokan kueri database: Gunakan teknik ini untuk menyimpan hasil kueri database untuk menghindari menjalankan kueri yang sama beberapa kali. Penembolokan kueri database berguna untuk kueri database yang kompleks dan memakan waktu. Saat Anda menyimpan hasil kueri, permintaan berikutnya untuk kueri yang sama dikembalikan dengan cepat.
Penembolokan jaringan pengiriman konten: Gunakan teknik ini untuk menyimpan konten web di server jaringan terdistribusi untuk mengurangi latensi dan meningkatkan pengiriman konten. Penembolokan jaringan pengiriman konten efektif untuk konten statis, seperti gambar, file CSS, dan file JavaScript. Jaringan pengiriman konten menyimpan salinan konten di beberapa lokasi di seluruh dunia, sehingga pengguna dapat mengakses konten dari server yang berada di dekat mereka secara geografis.
Menggunakan replika baca
Banyak database mendukung beberapa replika baca. Distribusikan kueri baca di seluruh replika untuk meminimalkan permintaan pada database tulis. Setiap replika baca dapat melayani subset lalu lintas, yang dapat meningkatkan performa.
Ketika Anda memiliki beban kerja dengan beberapa replika data yang Anda harapkan untuk tetap sinkron, sangat membantu untuk memodelkan sistem terdistribusi ini dengan menggunakan teori PACELC. Teori PACELC membantu Anda memahami latensi versus pilihan tradeoff konstansi dalam keadaan sistem yang tidak dipartisi. Gunakan informasi ini untuk membantu Anda memilih mesin database dan strategi sinkronisasi data yang paling baik mengatasi sistem dalam status dipartisi dan tidak dipartisi. Untuk informasi selengkapnya, lihat pola Pemisahan Tanggung Jawab Perintah dan Kueri (CQRS).
Mengoptimalkan konsistensi data
Dalam beban kerja terdistribusi, di mana data berada di beberapa simpul atau lokasi, tingkat konsistensi yang Anda pilih menentukan seberapa cepat perubahan dalam satu lokasi mencerminkan orang lain. Memilih konsistensi yang lebih ketat mengonsumsi lebih banyak sumber daya komputasi dan dapat berdampak negatif pada efisiensi performa. Di sisi lain, tingkat konsistensi yang kurang ketat, seperti konsistensi akhir memperkenalkan inkonsistensi sementara di antara simpul tetapi dapat meningkatkan efisiensi performa.
Konsistensi akhirnya mencapai keseimbangan antara akurasi data dan performa beban kerja. Perubahan tersebar secara bertahap alih-alih secara instan, meningkatkan respons beban kerja dan kecepatan pemrosesan data. Meskipun memperkenalkan inkonsistensi berumur pendek, beban kerja akhirnya menyajikan data yang konsisten di semua simpul. Memilih konsistensi akhir dapat meningkatkan performa beban kerja dan lebih meningkatkan ketersediaan dan skalabilitasnya.
Mengoptimalkan pembaruan data
Anda dapat menggunakan konkurensi optimis untuk menangani pembaruan bersamaan ke data yang sama. Alih-alih mengunci data dan mencegah pembaruan lain, konkurensi optimis memungkinkan beberapa pengguna atau proses untuk bekerja secara bersamaan dan mengasumsikan bahwa konflik jarang terjadi.
Dengan konkurensi optimis, setiap operasi pembaruan menyertakan versi atau tanda waktu yang mewakili status data pada saat pembaruan. Ketika pembaruan yang bertentangan terdeteksi, sistem menyelesaikan konflik dengan menolak pembaruan atau menggabungkan perubahan.
Konkurensi optimis meminimalkan ketidakcocokan dan memungkinkan pembaruan bersamaan untuk dilanjutkan tanpa penguncian yang tidak perlu. Ini mengurangi waktu tunggu untuk sumber daya dan memberikan throughput tinggi.
Mengoptimalkan pergerakan dan pemrosesan data
Mengoptimalkan pergerakan dan pemrosesan data melibatkan peningkatan efisiensi dan performa operasi yang terkait dengan ekstraksi data, transformasi, pemuatan, dan pemrosesan. Pertimbangkan aspek utama berikut untuk mengoptimalkan pergerakan dan pemrosesan data:
Pengoptimalan ekstraksi, transformasi, dan pemuatan (ETL): Optimalkan proses ETL untuk meminimalkan waktu pemrosesan. Anda dapat menyederhanakan proses ekstraksi, menerapkan algoritma transformasi yang efisien, dan mengoptimalkan proses pemuatan. Ketika Anda membuat setiap langkah efisien, Anda dapat mengoptimalkan alur kerja secara keseluruhan.
Pemrosesan paralel: Gunakan teknik pemrosesan paralel untuk meningkatkan performa. Saat Anda mendistribusikan tugas pemrosesan data di beberapa utas atau simpul, Anda dapat membagi dan memproses beban kerja secara bersamaan, yang menghasilkan pemrosesan cepat.
Pemrosesan batch: Kelompokkan tugas serupa bersama-sama untuk mengurangi overhead yang disebabkan oleh operasi berulang. Memproses beberapa tugas dalam batch untuk mengurangi waktu pemrosesan secara keseluruhan.
Mengoptimalkan desain penyimpanan
Mengoptimalkan desain penyimpanan memerlukan pembuatan arsitektur penyimpanan data yang tepat dan memilih teknologi penyimpanan yang sesuai. Desain penyimpanan yang disederhanakan meningkatkan akses data, pengambilan, dan manipulasi. Melalui desain penyimpanan strategis, beban kerja mencapai waktu respons yang ditingkatkan dan fungsionalitas keseluruhan.
Desain untuk kedekatan data
Kedekatan data mengacu pada penempatan data yang strategis lebih dekat dengan pengguna atau layanan yang paling sering mengaksesnya. Dengan mengurangi jarak fisik atau logis antara data dan penggunanya, kedekatan data memastikan akses data yang lebih cepat dan responsivitas yang lebih baik. Untuk mengoptimalkan desain untuk kedekatan, pertimbangkan strategi ini:
Mengevaluasi pola akses data: Menilai pola akses beban kerja Anda dan data yang sering diakses. Analisis ini dapat membantu menentukan tempat menempatkan data untuk manfaat maksimum.
Pilih solusi yang mendukung relokasi data: Pertimbangkan solusi yang menawarkan relokasi data dinamis berdasarkan perubahan pola akses, memastikan penempatan data yang optimal.
Pilih solusi yang mendukung sinkronisasi data: Jika melayani basis pengguna terdistribusi, pilih solusi yang memfasilitasi sinkronisasi data di berbagai wilayah, memastikan bahwa replika data tersedia di dekat pengguna.
Tradeoff: Jika data yang mendasar sering berubah, terapkan mekanisme invalidasi cache untuk memastikan bahwa data yang di-cache tetap terbaru.
Menggunakan persistensi poliglot
Persistensi poliglot adalah praktik menggunakan beberapa teknologi penyimpanan data untuk menyimpan dan mengelola berbagai jenis data dalam aplikasi atau sistem. Berbagai jenis database atau solusi penyimpanan melayani persyaratan data yang berbeda.
Persistensi poliglot memanfaatkan manfaat setiap teknologi penyimpanan data untuk memastikan performa dan skalabilitas yang optimal untuk setiap jenis data. Misalnya, Anda dapat menggunakan database relasional untuk menyimpan data transaksional terstruktur. Dan Anda mungkin menggunakan database NoSQL untuk menyimpan data yang tidak terstruktur atau semi terstruktur.
Merancang skema untuk setiap teknologi penyimpanan data berdasarkan persyaratan data. Untuk database relasional, Anda mungkin membuat tabel yang dinormalisasi dengan hubungan yang sesuai. Untuk database NoSQL, Anda mungkin menentukan struktur dokumen atau pasangan kunci-nilai. Kembangkan komponen yang diperlukan untuk berinteraksi dengan setiap teknologi penyimpanan data, seperti API, lapisan akses data, atau alur integrasi data. Pastikan bahwa aplikasi dapat membaca dan menulis data ke penyimpanan data yang sesuai.
Tradeoff: Struktur data yang memiliki normalisasi rendah dapat meningkatkan performa tetapi memperkenalkan kompleksitas.
Sistem OLTP dan OLAP terpisah
Untuk memisahkan sistem OLTP dan OLAP , rancang dan sebarkan sistem yang berbeda untuk pemrosesan transaksi dan tugas pemrosesan analitis. Pemisahan ini memungkinkan Anda mengoptimalkan setiap sistem untuk beban kerja dan karakteristik spesifiknya.
Sistem OLTP digunakan untuk pemrosesan transaksi real time. Mereka secara efisien dan andal menangani transaksi individu. Sistem OLTP biasanya digunakan untuk melakukan tugas operasional sehari-hari, seperti pemrosesan pesanan online, manajemen inventarisasi, dan manajemen data pelanggan. Sistem OLTP memprioritaskan responsivitas, konsistensi, dan konkurensi.
Sistem OLAP digunakan untuk pemrosesan dan pelaporan analitik yang kompleks. Mereka menangani data dalam volume besar dan melakukan perhitungan dan agregasi intensif. Sistem OLAP digunakan untuk tugas-tugas seperti kecerdasan bisnis, penggalian data, dan dukungan keputusan. Sistem OLAP memprioritaskan performa kueri, agregasi data, dan analisis multidemiksa.
Ketika Anda memisahkan sistem OLTP dan OLAP, Anda dapat mengalokasikan sumber daya yang sesuai dan mengoptimalkan setiap sistem untuk beban kerja spesifiknya. Pemisahan memungkinkan Anda menerapkan teknik pemodelan data yang berbeda ke setiap sistem. Sistem OLTP biasanya menggunakan skema yang dinormalisasi untuk pemrosesan transaksional yang efisien. Sistem OLAP mungkin menggunakan skema denormalisasi atau teknik pergudangan data untuk mengoptimalkan performa kueri.
Fasilitasi Azure
Data pembuatan profil: Azure menawarkan alat dan layanan yang dapat Anda gunakan untuk memprofilkan data, seperti Azure Data Catalog, Azure Purview, dan Azure Synapse Analytics. Alat-alat ini memungkinkan Anda mengekstrak, mengubah, dan memuat data dari berbagai sumber, melakukan pemeriksaan kualitas data, dan mendapatkan wawasan tentang data.
Memantau performa data: Untuk memantau performa data, Anda dapat menggunakan Azure Monitor untuk mengumpulkan dan menganalisis metrik infrastruktur, log, dan data aplikasi. Anda dapat mengintegrasikan Monitor dengan layanan lain seperti Application Insights. Application Insights menyediakan pemantauan performa aplikasi dan mendukung banyak platform.
Application Insights mengumpulkan data penggunaan dan performa. Anda dapat menggunakan Analitik Log untuk menghubungkan data tersebut dengan data konfigurasi dan performa di seluruh sumber daya Azure.
Anda dapat menggunakan fitur wawasan Azure SQL dan Azure Cosmos DB untuk memantau database Anda. Fitur ini memungkinkan Anda mendiagnosis dan menyetel masalah performa database.
Pemartisian data: Azure menawarkan berbagai strategi pemartisian untuk penyimpanan data yang berbeda. Setiap penyimpanan data mungkin memiliki pertimbangan dan opsi konfigurasi yang berbeda untuk partisi data. Untuk informasi selengkapnya, lihat Strategi pemartisian data.
Mengoptimalkan kueri database dan performa indeks: Gunakan fitur wawasan performa kueri Azure SQL Database untuk mengoptimalkan kueri, tabel, dan database. Anda dapat menggunakan fitur ini untuk mengidentifikasi dan memecahkan masalah performa kueri.
Untuk database relasional, Anda harus mengikuti panduan desain indeks, panduan indeks SQL Server, dan panduan indeks Azure Cosmos DB. Gunakan SQL Database untuk melakukan penyetelan otomatis untuk kueri guna meningkatkan performanya.
Dalam database SQL, Anda harus mengatur ulang atau membangun ulang indeks secara teratur. Identifikasi kueri lambat dan sesuaikan untuk meningkatkan performa. Banyak mesin database memiliki fitur penyetelan kueri. Untuk informasi selengkapnya, lihat Praktik terbaik untuk performa kueri.
Azure Cosmos DB memiliki kebijakan pengindeksan default yang mengindeks setiap properti dari setiap item dan memberlakukan indeks rentang untuk string atau angka apa pun. Kebijakan ini memberi Anda performa kueri yang efisien, dan Anda tidak perlu mengelola indeks di muka.
Mengoptimalkan beban penyimpanan: Banyak layanan database Azure mendukung replika baca. Ketersediaan dan konfigurasi replika baca bervariasi tergantung pada layanan database Azure. Lihat dokumentasi resmi untuk setiap layanan untuk memahami detail dan opsi.
Mengoptimalkan desain penyimpanan: Azure menawarkan berbagai penyimpanan data agar sesuai dengan kebutuhan beban kerja Anda. Pahami jenis penyimpanan data dan pilih penyimpanan data Azure untuk aplikasi Anda.
Tautan terkait
- Penyetelan otomatis di SQL Database
- Azure Cosmos DB
- Panduan indeks Azure Cosmos DB
- Azure SQL
- Praktik terbaik untuk performa kueri
- Pola CQRS
- Panduan pemartisian data
- Strategi pemartisian data
- Kebijakan pengindeksan default
- Panduan desain indeks
- Gambaran umum OLAP
- Gambaran umum OLTP
- Praktik terbaik pemartisian
- Mengatur ulang atau membangun ulang indeks
- Pilih penyimpanan data Azure untuk aplikasi Anda
- Panduan indeks SQL Server
- Memahami jenis penyimpanan data
Daftar periksa Efisiensi Performa
Lihat kumpulan rekomendasi lengkap.