Adakah perbedaan signifikan dengan 500+ juta tabel baris di Oracle?

8

Saya di perancang basis data di lingkungan data warehouse. Saya terbiasa berurusan dengan tabel dengan maksimum 1 juta baris dan sekarang saya dihadapkan dengan tabel dengan lebih dari setengah miliar baris. Apakah ada perbedaan signifikan dengan alat dalam "kotak alat efisiensi"? Dapatkah saya mempercayai pengetahuan saya sebelumnya tentang indeks, partisi, dan sejenisnya atau apakah beberapa alat khusus ini lebih merupakan penghalang daripada bantuan dengan data sebesar itu? Ada tips lain untuk berurusan dengan tabel?

(Sudah menemukan pos bagus tentang Memperbarui 700 juta baris dengan nilai yang sama )

JHFB
sumber

Jawaban:

7

Dasar-dasar pengindeksan dll. Semuanya bekerja dengan cara yang persis sama, jadi sebenarnya perbedaannya hanyalah biaya kesalahan ini!

Yang mengatakan, inilah daftar (belum tentu lengkap) hal-hal yang perlu diingat:

  • Indeks B-tree cenderung memiliki level ekstra di dalamnya, sehingga biaya untuk menggunakannya sedikit lebih tinggi. Namun, dalam DW Anda harus menggunakan indeks bitmap (dengan asumsi Anda sudah mendapatkan edisi perusahaan)
  • Ini akan memakan waktu lebih lama untuk menghitung statistik untuk seluruh tabel - ke titik di mana itu tidak mungkin di jendela normal semalam. Ini bisa diatasi dengan
    • Menggunakan yang lebih kecil estimate_percentsaat mengumpulkan statistik sehingga lebih sedikit tabel yang dijadikan sampel.
    • Menggunakan pengumpulan statistik tambahan (hanya relevan jika Anda memiliki indeks global pada tabel yang dipartisi)
  • Histogram untuk indeks dibatasi hingga 254 ember. Semakin banyak baris kemungkinan berarti nilai yang lebih berbeda, yang berarti bahwa nilai "hampir populer" dapat menjadi masalah yang lebih besar untuk data yang miring.
  • Peluang seluruh tabel Anda akan sesuai dengan cache buffer mendekati nol, yang berarti Anda lebih cenderung memiliki lebih banyak pembacaan fisik (disk). Perangkat kerja normal Anda mungkin juga terlalu besar untuk di-cache.
  • Partisi dapat menjadi teman Anda - jika Anda melakukannya dengan benar! Jika Anda biasanya memodifikasi dan meminta data di beberapa partisi maka harganya lebih dari sekadar tabel biasa.
  • Tampilan terwujud bisa sangat berguna untuk mengurangi set kerja Anda. mis. jika Anda memiliki data 10+ tahun, tetapi sebagian besar permintaan pengguna hanya menentang 2 tahun terakhir, kemudian membuat MV terbatas hanya data ini bisa sangat membantu.
  • Semakin besar basis data, semakin kecil kemungkinan bisnis akan (dapat) mendanai basis data uji yang merupakan duplikat penuh dari lingkungan hidup. Hal ini mempersulit mereproduksi masalah kinerja dalam pengujian karena permintaan yang lambat mungkin disebabkan oleh skala dan / atau penyimpanan fisik data. Anda tidak dapat mengandalkan kemampuan mengekstrapolasi hasil kueri dari tes DB yang jauh lebih kecil ke kinerja yang sesuai secara langsung.

Jika Anda belum terbiasa membaca dan memahami rencana pelaksanaan, saya akan meluangkan waktu untuk mempelajari ini: Anda pasti akan mengalami masalah kinerja di beberapa titik sehingga mengetahui cara mendiagnosis masalah dengan benar akan menjadi lebih penting karena semakin sulit untuk menambahkan yang baru mengindeks atau membuat perubahan skema saat jumlah baris Anda lebih besar.

Chris Saxon
sumber
4

Kuantitas memiliki kualitas tersendiri.

Saat berhadapan dengan tabel sebesar itu, ada baiknya untuk tidak menganggap tabel fakta sebagai tabel, tetapi memikirkannya di tingkat segmen, atau sebagai kumpulan tabel diskrit. (Menjadi cukup tua untuk mengingat bergulir-partisi saya sendiri dengan tampilan partisi membantu.)

Kertas Scaling to Infinity Tim Gorman adalah sumber yang sangat berharga.

Adam Musch
sumber
1
+1 untuk referensi. Dia memperbarui slide untuk 2012 .
Iain Samuel McLean Penatua