Bagikan melalui


Manajemen biaya untuk kumpulan SQL tanpa server di Azure Synapse Analytics

Artikel ini menjelaskan cara memperkirakan dan mengelola biaya untuk kumpulan SQL tanpa server di Azure Synapse Analytics:

  • Memperkirakan jumlah data yang diproses sebelum mengeluarkan kueri
  • Menggunakan fitur kontrol biaya untuk menetapkan anggaran

Pahami bahwa biaya untuk kumpulan SQL tanpa server di Azure Synapse Analytics hanya sebagian dari biaya bulanan dalam tagihan Azure Anda. Jika Anda menggunakan layanan Azure lainnya, Anda akan ditagih untuk semua layanan dan sumber daya Azure yang digunakan di langganan Azure Anda, termasuk layanan pihak ketiga. Artikel ini menjelaskan cara merencanakan dan mengelola biaya untuk kumpulan SQL tanpa server di Azure Synapse Analytics.

Data yang diproses

Data yang diproses adalah jumlah data yang disimpan sementara oleh sistem saat kueri dijalankan. Data yang diproses terdiri dari jumlah berikut:

  • Jumlah data yang dibaca dari penyimpanan. Jumlah ini meliputi:
    • Data yang dibaca saat membaca data.
    • Data yang dibaca saat membaca metadata (untuk format file yang berisi metadata, seperti Parquet).
  • Jumlah data dalam hasil menengah. Data ini ditransfer di antara node saat kueri berjalan. Ini termasuk transfer data ke titik akhir Anda, dalam format yang tidak dikompresi.
  • Jumlah data yang ditulis ke penyimpanan. Jika Anda menggunakan CETAS untuk mengekspor kumpulan hasil Anda ke penyimpanan, maka jumlah data yang ditulis ditambahkan ke jumlah data yang diproses untuk bagian SELECT dari CETAS.

Membaca file dari penyimpanan sangat dioptimalkan. Proses ini menggunakan:

  • Prefetching, yang mungkin menambahkan beberapa overhead ke jumlah data yang dibaca. Jika kueri membaca seluruh file, maka tidak ada overhead. Jika file dibaca sebagian, seperti dalam kueri TOP N, maka sedikit lebih banyak data dibaca dengan menggunakan prefetching.
  • Parser nilai yang dipisahkan koma (CSV) yang dioptimalkan. Jika Anda menggunakan PARSER_VERSION='2.0' untuk membaca file CSV, maka jumlah data yang dibaca dari penyimpanan sedikit meningkat. Parser CSV yang dioptimalkan membaca file secara paralel, dalam gugus ukuran sama. Gugus tidak selalu berisi seluruh baris. Untuk memastikan semua baris diuraikan, parser CSV yang dioptimalkan juga membaca fragmen kecil dari gugus yang berdekatan. Proses ini menambahkan sejumlah kecil overhead.

Statistik

Pengoptimal kueri kumpulan SQL tanpa server bergantung pada statistik untuk menghasilkan rencana eksekusi kueri yang optimal. Anda dapat membuat statistik secara manual. Jika tidak, kumpulan SQL tanpa server akan membuatnya secara otomatis. Bagaimanapun, statistik dibuat dengan menjalankan kueri terpisah yang mengembalikan kolom tertentu pada laju sampel yang disediakan. Kueri ini memiliki jumlah data terkait yang diproses.

Jika Anda menjalankan kueri yang sama atau kueri lainnya yang akan mendapat manfaat dari statistik yang dibuat, maka statistik akan digunakan kembali jika memungkinkan. Tidak ada data tambahan yang diproses untuk pembuatan statistik.

Saat statistik dibuat untuk kolom Parquet, hanya kolom yang relevan yang dibaca dari file. Saat statistik dibuat untuk kolom CSV, seluruh file dibaca dan diurai.

Pembulatan

Jumlah data yang diproses dibulatkan ke atas hingga MB terdekat per kueri. Setiap kueri memiliki minimal 10 MB data yang diproses.

Data apa yang diproses tidak disertakan

  • Metadata tingkat server (seperti login, peran, dan info masuk tingkat server).
  • Database yang Anda buat di titik akhir Anda. Database tersebut hanya berisi metadata (seperti pengguna, peran, skema, tampilan, fungsi bernilai tabel sebaris [TVF], prosedur tersimpan, info masuk lingkup database, sumber data eksternal, format file eksternal, dan tabel eksternal).
    • Jika Anda menggunakan inferensi skema, maka fragmen file dibaca untuk menyimpulkan nama kolom dan jenis data, dan jumlah data yang dibaca ditambahkan ke jumlah data yang diproses.
  • Pernyataan bahasa definisi data (DDL), kecuali untuk pernyataan BUAT STATISTIK karena pernyataan ini memproses data dari penyimpanan berdasarkan persentase sampel yang ditentukan.
  • Kueri khusus metadata.

Mengurangi jumlah data yang diproses

Anda dapat mengoptimalkan jumlah data yang diproses per kueri dan meningkatkan performa dengan membuat partisi dan mengonversi data Anda ke format berbasis kolom terkompresi seperti Parquet.

Contoh

Bayangkan tiga tabel.

  • Tabel population_csv didukung 5 TB file CSV. File diatur dalam lima kolom berukuran sama.
  • Tabel population_parquet memiliki data yang sama dengan tabel population_csv. Tabel ini didukung 1 TB file Parquet. Tabel ini lebih kecil dari tabel sebelumnya karena data dikompresi dalam format Parquet.
  • Tabel very_small_csv didukung 100 KB file CSV.

Kueri 1: PILIH SUM(populasi) DARI population_csv

Kueri ini membaca dan menguraikan seluruh file untuk mendapatkan nilai untuk kolom populasi. Node memproses fragmen tabel ini, dan jumlah populasi untuk setiap fragmen ditransfer di antara node. Jumlah akhir ditransfer ke titik akhir Anda.

Kueri ini memproses 5 TB data ditambah overhead dalam jumlah kecil untuk mentransfer jumlah fragmen.

Kueri 2: PILIH SUM(populasi) DARI population_parquet

Saat Anda mengkueri format terkompresi dan berbasis kolom seperti Parquet, lebih sedikit data yang dibaca dibandingkan di kueri 1. Anda melihat hasil ini karena kumpulan SQL tanpa server membaca satu kolom terkompresi, bukan seluruh file. Dalam kasus ini, 0,2 TB dibaca. (Lima kolom berukuran sama masing-masing 0,2 TB.) Node memproses fragmen tabel ini, dan jumlah populasi untuk setiap fragmen ditransfer di antara node. Jumlah akhir ditransfer ke titik akhir Anda.

Kueri ini memproses 0,2 TB ditambah sejumlah kecil overhead untuk mentransfer jumlah fragmen.

Kueri 3: PILIH * DARI population_parquet

Kueri ini membaca semua kolom dan mentransfer semua data dalam format yang tidak dikompresi. Jika format kompresi adalah 5:1, maka kueri ini memproses 6 TB karena kueri membaca 1 TB dan mentransfer 5 TB data yang tidak dikompresi.

Kueri 4: PILIH COUNT(*) DARI very_small_csv

Kueri ini membaca seluruh file. Ukuran total file dalam penyimpanan untuk tabel ini adalah 100 KB. Node memproses fragmen tabel ini, dan jumlah untuk setiap fragmen ditransfer di antara node. Jumlah akhir ditransfer ke titik akhir Anda.

Kueri ini memproses sedikit lebih banyak dari 100 KB data. Jumlah data yang diproses untuk kueri ini dibulatkan hingga 10 MB, seperti yang ditentukan di bagian Pembulatan pada artikel ini.

Kontrol biaya

Fitur kontrol biaya dalam kumpulan SQL tanpa server memungkinkan Anda menetapkan anggaran untuk jumlah data yang diproses. Anda dapat menetapkan anggaran dalam TB data yang diproses selama sehari, minggu, dan bulan. Pada saat yang sama Anda dapat menetapkan satu atau beberapa anggaran. Untuk mengonfigurasi kontrol biaya untuk kumpulan SQL tanpa server, Anda dapat menggunakan Synapse Studio atau T-SQL.

Mengonfigurasi kontrol biaya untuk kumpulan SQL tanpa server di Synapse Studio

Untuk mengonfigurasi kontrol biaya untuk kumpulan SQL tanpa server di Synapse Studio, navigasikan ke Kelola item di menu di sebelah kiri, lalu pilih item kumpulan SQL di bawah kumpulan Analytics. Saat Anda mengarahkan kumpulan SQL tanpa server, Anda akan melihat ikon untuk kontrol biaya - klik ikon ini.

Navigasi kontrol biaya

Setelah Anda mengklik ikon kontrol biaya, bilah sisi akan muncul:

Konfigurasi kontrol biaya

Untuk menetapkan satu atau beberapa anggaran, pertama-tama klik tombol radio Aktifkan untuk anggaran yang ingin Anda atur, lalu masukkan nilai bilangan bulat dalam kotak teks. Satuan untuk nilainya adalah TB. Setelah Anda mengonfigurasi anggaran yang Anda inginkan, klik tombol terapkan di bagian bawah bilah sisi. Itu saja, anggaran Anda sekarang telah ditetapkan.

Mengonfigurasi kontrol biaya untuk kumpulan SQL tanpa server di T-SQL

Untuk mengonfigurasi kontrol biaya untuk kumpulan SQL tanpa server di T-SQL, Anda perlu menjalankan satu atau beberapa prosedur tersimpan berikut ini.

sp_set_data_processed_limit
	@type = N'daily',
	@limit_tb = 1

sp_set_data_processed_limit
	@type= N'weekly',
	@limit_tb = 2

sp_set_data_processed_limit
	@type= N'monthly',
	@limit_tb = 3334

Untuk melihat konfigurasi saat ini, jalankan pernyataan T-SQL berikut:

SELECT * FROM sys.configurations
WHERE name like 'Data processed %';

Untuk melihat berapa banyak data yang diproses selama hari, minggu, atau bulan saat ini, jalankan pernyataan T-SQL berikut:

SELECT * FROM sys.dm_external_data_processed

Melampaui batas yang ditentukan dalam kontrol biaya

Jika batas apa pun terlampaui selama eksekusi kueri, kueri tidak akan dihentikan.

Ketika batas terlampaui, kueri baru akan ditolak dengan pesan kesalahan yang berisi detail mengenai periode tersebut, batas yang ditentukan untuk periode tersebut dan data yang diproses untuk periode tersebut. Misalnya, jika kueri baru dieksekusi, ketika batas mingguan diatur ke 1 TB dan terlampaui, pesan kesalahan akan berupa:

Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))

Langkah berikutnya

Untuk mempelajari cara mengoptimalkan kueri Anda untuk performa, lihat Praktik terbaik untuk kumpulan SQL tanpa server.