Mengoptimalkan penyimpanan untuk performa kueri

Halaman ini memberikan praktik terbaik untuk mengoptimalkan penyimpanan BigQuery untuk performa kueri. Anda juga dapat mengoptimalkan penyimpanan untuk menghemat biaya. Meskipun praktik terbaik ini terutama berfokus pada tabel yang menggunakan penyimpanan BigQuery, praktik ini juga dapat diterapkan ke tabel eksternal.

BigQuery menyimpan data dalam format berbasis kolom. Database berorientasi kolom dioptimalkan untuk workload analitis yang menggabungkan data pada kumpulan data yang sangat banyak. Karena kolom biasanya memiliki lebih banyak redundansi daripada baris, karakteristik ini memungkinkan kompresi data yang lebih besar menggunakan teknik seperti encoding run-length. Untuk mengetahui informasi lebih lanjut mengenai cara BigQuery menyimpan data, baca Ringkasan penyimpanan BigQuery. Mengoptimalkan penyimpanan BigQuery akan meningkatkan performa kueri dan mengontrol biaya.

BigQuery memberikan detail tentang konsumsi penyimpanan resource Anda. Untuk melihat metadata penyimpanan tabel, buat kueri tabel virtual INFORMATION_SCHEMA berikut:

Data tabel cluster

Praktik terbaik: Buat tabel yang dikelompokkan.

Guna mengoptimalkan penyimpanan untuk kueri, mulailah dengan mengelompokkan data tabel. Dengan mengelompokkan kolom yang sering digunakan, Anda dapat mengurangi volume total dari data yang dipindai oleh kueri. Untuk informasi tentang cara membuat cluster, lihat Membuat dan menggunakan tabel yang dikelompokkan.

Data tabel partisi

Praktik terbaik: Bagi tabel besar dengan partisi.

Dengan partisi, Anda dapat mengelompokkan dan mengurutkan data berdasarkan kumpulan karakteristik kolom yang ditentukan, seperti kolom bilangan bulat, kolom unit waktu, atau waktu penyerapan. Partisi meningkatkan performa kueri dan mengontrol biaya dengan mengurangi jumlah byte yang dibaca oleh kueri.

Untuk informasi selengkapnya tentang partisi, lihat Pengantar tabel berpartisi.

Menggunakan setelan masa berlaku tabel dan partisi

Praktik terbaik: Untuk mengoptimalkan penyimpanan, konfigurasikan setelan habis masa berlaku default untuk set data, tabel, dan tabel berpartisi.

Anda dapat mengontrol biaya penyimpanan dan mengoptimalkan penggunaan penyimpanan dengan menetapkan tanggal habis masa berlaku tabel default untuk tabel yang baru dibuat dalam set data. Ketika masa berlaku berakhir, tabel akan dihapus beserta semua data yang ada di tabel itu. Jika Anda menetapkan properti saat set data dibuat, tabel apa pun yang dibuat dalam set data akan dihapus setelah akhir periode masa berlaku. Jika Anda menetapkan properti setelah set data dibuat, hanya tabel baru yang akan dihapus setelah akhir periode masa berlaku.

Misalnya, jika Anda menetapkan masa berlaku tabel default ke tujuh hari, data yang lebih lama akan otomatis dihapus setelah satu minggu.

Opsi ini berguna jika Anda hanya memerlukan akses ke data terbaru. Opsi ini juga berguna jika Anda bereksperimen dengan data dan tidak perlu menyimpannya.

Jika tabel Anda dipartisi berdasarkan tanggal, masa berlaku tabel default set data akan berlaku untuk masing-masing partisi. Anda juga dapat mengontrol akhir masa berlaku partisi menggunakan flag time_partitioning_expiration di alat command line bq atau setelan konfigurasi expirationMs di API. Saat masa berlaku partisi berakhir, data dalam partisi akan dihapus, tetapi tabel berpartisi tidak akan dihapus meskipun tabel kosong.

Misalnya, perintah berikut akan membuat partisi habis masa berlakunya setelah tiga hari:

bq mk \
--time_partitioning_type=DAY \
--time_partitioning_expiration=259200 \
project_id:dataset.table

Menggabungkan data jangka panjang

Praktik terbaik: Identifikasi apakah data tingkat baris perlu disimpan dalam jangka panjang, dan jika tidak, hanya simpan data gabungan dalam jangka panjang.

Dalam banyak kasus, detail yang terdapat dalam data tingkat baris atau transaksional berguna dalam jangka pendek, tetapi lebih sedikit dirujuk dalam jangka panjang. Dalam situasi ini, Anda dapat membangun kueri agregasi untuk menghitung dan menyimpan metrik yang terkait dengan data ini, lalu menggunakan akhir masa berlaku tabel atau partisi untuk menghapus data tingkat baris secara sistematis. Hal ini mengurangi biaya penyimpanan sekaligus membuat metrik tetap tersedia untuk konsumsi jangka panjang.

Langkah berikutnya