Saya ingin menemukan ruang aktual yang dikonsumsi oleh indeks di atas meja di oracle 10g. Saya tidak bermaksud memasukkan ruang yang disediakan oleh oracle untuk penggunaan di masa mendatang. (Overhead oleh oracle seharusnya tidak dipertimbangkan.) Saya ingin byte yang digunakan bukan byte yang dialokasikan.
Bisakah Anda membantu saya untuk maju?
Juga, apakah ada cara untuk menemukan ukuran sebenarnya dari bidang panjang dalam sebuah tabel.
PS: vsize () dan dbms_lob.getlength () tidak berfungsi.
oracle
oracle-10g
Egaliter
sumber
sumber
Jawaban:
akan menunjukkan jumlah ruang yang benar-benar dikonsumsi oleh setiap indeks. Saya tidak jelas apakah itu jenis overhead yang Anda coba pertanggungjawabkan dan bagaimana Anda membedakan "bekas" dan "dialokasikan" dalam konteks indeks. Jika Anda ingin memperhitungkan ruang kosong dalam indeks, Anda dapat menggunakan prosedur DBMS_SPACE.SPACE_USAGE untuk menentukan berapa banyak blok kosong sebagian dalam indeks.
sumber
delete <<name of table>>
) dibandingkan dengan ukuran yang digunakan yang akan bervariasi dengan jumlah entri dalam indeks.SELECT idx.index_name, SUM(bytes) FROM user_segments seg, user_indexes idx WHERE idx.table_name = 'EMERGE_REPORTING_DETAIL' AND idx.index_name = seg.segment_name GROUP BY idx.index_name
Untuk mengukur (apa yang saya percaya adalah pengertian Anda tentang) ukuran indeks yang dialokasikan dan digunakan, saya mungkin akan menggunakan
dbms_space
Prosedur ini mengukur ukuran indeks yang dialokasikan dan digunakan bernama * TQ84_SIZE_IX *. Demi kelengkapan, saya juga menambahkan hitungan byte seperti yang dilaporkan oleh
user_segments
.Sekarang, prosedur ini dapat dilihat dalam tindakan:
Dengan satu entri dalam indeks, angka-angka berikut dikembalikan:
Mengisi indeks ...
... dan mendapatkan angka lagi ...
... laporan:
Kemudian, jika indeks "dikosongkan":
itu menunjukkan:
yang menunjukkan bahwa ukuran yang dialokasikan tidak menyusut sedangkan ukuran yang digunakan tidak.
sumber
Jika seseorang datang ke sini mencari cara untuk menemukan ukuran bidang yang panjang, di bawah ini adalah cara untuk melakukannya. Saya akan menghapus jawaban ini jika pertanyaannya dipisahkan.
Contoh data...
Berfungsi untuk melakukan pekerjaan ... (Untuk produksi ini harus dalam satu paket)
Uji fungsinya ...
sumber
Saya harus mengubah jawaban René Nyffenegger untuk membuatnya lebih umum dan lebih mudah untuk melihat penggunaan ruang untuk semua indeks dalam suatu skema.
Saya pikir saya akan membagikan kode yang dimodifikasi di sini, kalau-kalau ada orang yang merasa berguna:
sumber