Aracılığıyla paylaş


Azure Synapse Analytics'te sunucusuz SQL havuzu için maliyet yönetimi

Bu makalede Azure Synapse Analytics'te sunucusuz SQL havuzu için maliyetleri nasıl tahmin edip yönetebileceğiniz açıklanmaktadır:

  • Sorguyu vermeden önce işlenen veri miktarını tahmin etme
  • Bütçeyi ayarlamak için maliyet denetimi özelliğini kullanma

Azure Synapse Analytics'teki sunucusuz SQL havuzu maliyetlerinin Azure faturanızdaki aylık maliyetlerin yalnızca bir bölümü olduğunu anlayın. Diğer Azure hizmetlerini kullanıyorsanız, üçüncü taraf hizmetler de dahil olmak üzere Azure aboneliğinizde kullanılan tüm Azure hizmetleri ve kaynakları için faturalandırılırsınız. Bu makalede Azure Synapse Analytics'te sunucusuz SQL havuzu için maliyetleri planlama ve yönetme işlemleri açıklanmaktadır.

İşlenen veriler

İşlenen veriler , sorgu çalıştırılırken sistemin geçici olarak depolandığı veri miktarıdır. İşlenen veriler aşağıdaki miktarlardan oluşur:

  • Depolama alanından okunan veri miktarı. Bu tutar şunları içerir:
    • Veri okuma işlemi sırasında okunan veriler.
    • Data read while reading metadata (for file formats that contain metadata, like Parquet).
  • Ara sonuçlardaki veri miktarı. Sorgu çalıştırılırken bu veriler düğümler arasında aktarılır. Uç noktanıza sıkıştırılmamış biçimde veri aktarımını içerir.
  • Depolama alanına yazılan veri miktarı. Sonuç kümenizi depolama alanına aktarmak için CETAS kullanırsanız, yazılan veri miktarı CETAS'ın SELECT bölümü için işlenen veri miktarına eklenir.

Dosyaları depolama alanından okumak yüksek oranda iyileştirilmiştir. İşlemde aşağıdakiler kullanılır:

  • Prefetching, which might add some overhead to the amount of data read. Sorgu bir dosyanın tamamını okursa ek yük yoktur. TOP N sorgularında olduğu gibi bir dosya kısmen okunursa, önceden oluşturma kullanılarak biraz daha fazla veri okunur.
  • İyileştirilmiş virgülle ayrılmış değer (CSV) ayrıştırıcısı. CSV dosyalarını okumak için PARSER_VERSION='2.0' kullanırsanız depolama alanından okunan veri miktarı biraz artar. İyileştirilmiş bir CSV ayrıştırıcısı, dosyaları eşit boyuttaki öbekler halinde paralel olarak okur. Chunks don't necessarily contain whole rows. Tüm satırların ayrıştırıldığından emin olmak için iyileştirilmiş CSV ayrıştırıcısı bitişik öbeklerin küçük parçalarını da okur. Bu işlem az miktarda ek yük ekler.

İstatistikler

Sunucusuz SQL havuzu sorgu iyileştiricisi, en iyi sorgu yürütme planlarını oluşturmak için istatistiklere dayanır. İstatistikleri el ile oluşturabilirsiniz. Aksi takdirde sunucusuz SQL havuzu bunları otomatik olarak oluşturur. Her iki durumda da istatistikler, sağlanan örnek hızda belirli bir sütunu döndüren ayrı bir sorgu çalıştırılarak oluşturulur. Bu sorgu ile ilişkilendirilmiş işlenen veri miktarı bulunmaktadır.

Oluşturulan istatistiklerden yararlanacak aynı sorguyu veya başka bir sorguyu çalıştırırsanız, mümkünse istatistikler yeniden kullanılır. İstatistik oluşturma için işlenen ek veri yoktur.

Parquet sütunu için istatistikler oluşturulduğunda dosyalardan yalnızca ilgili sütun okunur. CSV sütunu için istatistikler oluşturulduğunda, tüm dosyalar okunur ve ayrıştırılır.

Rounding

İşlenen veri miktarı sorgu başına en yakın MB'a yuvarlanir. Her sorguda en az 10 MB veri işlenir.

İşlenen veriler şunları içermez:

  • Sunucu düzeyinde meta veriler (oturum açma bilgileri, roller ve sunucu düzeyinde kimlik bilgileri gibi).
  • Uç noktanızda oluşturduğunuz veritabanları. Bu veritabanları yalnızca meta veriler (kullanıcılar, roller, şemalar, görünümler, satır içi tablo değerli işlevler [TVF], saklı yordamlar, veritabanı kapsamlı kimlik bilgileri, dış veri kaynakları, dış dosya biçimleri ve dış tablolar gibi) içerir.
    • Şema çıkarımı kullanırsanız, sütun adlarını ve veri türlerini çıkarsamak için dosya parçaları okunur ve okunan veri miktarı işlenen veri miktarına eklenir.
  • Data definition language (DDL) statements, except for the CREATE STATISTICS statement because it processes data from storage based on the specified sample percentage.
  • Yalnızca meta veri sorguları.

İşlenen veri miktarını azaltma

Verilerinizi bölümleyip Parquet gibi sıkıştırılmış sütun tabanlı bir biçime dönüştürerek işlenen sorgu başına veri miktarınızı iyileştirebilir ve performansı geliştirebilirsiniz.

Örnekler

Üç masa düşünün.

  • population_csv tablosu 5 TB CSV dosyasıyla desteklenir. Dosyalar eşit boyutta beş sütun halinde düzenlenmiştir.
  • population_parquet tablosu, population_csv tablosuyla aynı verilere sahiptir. It's backed by 1 TB of Parquet files. Veriler Parquet biçiminde sıkıştırıldığından bu tablo önceki tablodan daha küçüktür.
  • very_small_csv tablosu 100 KB CSV dosyası tarafından desteklenir.

Query 1: SELECT SUM(population) FROM population_csv

Bu sorgu, popülasyon sütununun değerlerini almak için tüm dosyaları okur ve ayrıştırıyor. Düğümler bu tablonun parçalarını işler ve her parçanın popülasyon toplamı düğümler arasında aktarılır. Son toplam uç noktanıza aktarılır.

Bu sorgu, parçaların toplamlarını aktarmak için küçük bir ek yük miktarıyla birlikte 5 TB veriyi işlemektedir.

Query 2: SELECT SUM(population) FROM population_parquet

Parquet gibi sıkıştırılmış ve sütun tabanlı biçimleri sorguladığınızda, sorgu 1'e göre daha az veri okunur. Sunucusuz SQL havuzu dosyanın tamamı yerine tek bir sıkıştırılmış sütunu okuduğundan bu sonucu görürsünüz. In this case, 0.2 TB is read. (Her birinde eşit boyutta beş sütun 0,2 TB'dir.) Düğümler bu tablonun parçalarını işler ve her parçanın popülasyon toplamı düğümler arasında aktarılır. Son toplam uç noktanıza aktarılır.

Bu sorgu, parça toplamlarını aktarmak için 0,2 TB artı küçük miktarda ek yükü işler.

Query 3: SELECT * FROM population_parquet

Bu sorgu tüm sütunları okur ve tüm verileri sıkıştırılmamış biçimde aktarır. Sıkıştırma biçimi 5:1 ise, sorgu 1 TB okuduğundan ve 5 TB sıkıştırılmamış veri aktardığından 6 TB'yi işler.

Query 4: SELECT COUNT(*) FROM very_small_csv

Bu sorgu tüm dosyaları okur. Bu tablo için depolamadaki dosyaların toplam boyutu 100 KB'tır. Düğümler bu tablonun parçalarını işler ve her parçanın toplamı düğümler arasında aktarılır. Son toplam uç noktanıza aktarılır.

Bu sorgu 100 KB'tan biraz daha fazla veri işler. Bu sorgu için işlenen veri miktarı, bu makalenin Yuvarlama bölümünde belirtildiği gibi 10 MB'a kadar yuvarlandı.

Maliyet kontrolü

Sunucusuz SQL havuzundaki maliyet denetimi özelliği, işlenen veri miktarı için bütçeyi ayarlamanıza olanak tanır. Bütçeyi bir gün, hafta ve ay için işlenen verilerin terabayt biriminde ayarlayabilirsiniz. Aynı zamanda bir veya daha fazla bütçe ayarlayabilirsiniz. Sunucusuz SQL havuzu için maliyet denetimini yapılandırmak için Synapse Studio veya T-SQL kullanabilirsiniz.

Synapse Studio'da sunucusuz SQL havuzu için maliyet denetimini yapılandırma

Synapse Studio'da sunucusuz SQL havuzu için maliyet denetimini yapılandırmak için Soldaki menüde Öğeyi yönet'e gidin ve Analiz havuzları'nın altında SQL havuzu öğesini seçin. Sunucusuz SQL havuzunun üzerine geldiğinizde, maliyet denetimi için bir simge göreceksiniz. Bu simgeye tıklayın.

Maliyet kontrol yönlendirmesi

Maliyet denetimi simgesine tıkladığınızda bir yan çubuk görüntülenir:

Maliyet denetimi yapılandırması

Bir veya daha fazla bütçe ayarlamak için, metin kutusuna tamsayı değerini girmek yerine, ayarlamak istediğiniz bütçe için radyo düğmesini etkinleştir'e tıklayın. Değerin birimi TB'dir. İstediğiniz bütçeleri yapılandırdıktan sonra yan çubuğun altındaki Uygula düğmesine tıklayın. İşte bu kadar, bütçeniz ayarlandı.

T-SQL'de sunucusuz SQL havuzu için maliyet denetimini yapılandırma

T-SQL'de sunucusuz SQL havuzu için maliyet denetimini yapılandırmak için aşağıdaki saklı yordamlardan birini veya daha fazlasını yürütmeniz gerekir.

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

Geçerli yapılandırmayı görmek için aşağıdaki T-SQL deyimini yürütün:

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

Geçerli gün, hafta veya ay boyunca ne kadar veri işlendiğini görmek için aşağıdaki T-SQL deyimini yürütür:

SELECT * FROM sys.dm_external_data_processed

Maliyet denetiminde tanımlanan sınırları aşma

Sorgu yürütme sırasında herhangi bir sınırın aşılması durumunda sorgu sonlandırılamaz.

Sınır aşıldığında, yeni sorgu, dönemle ilgili ayrıntıları, o döneme ait tanımlı sınırı ve o dönem için işlenen verileri içeren hata iletisiyle reddedilir. Örneğin, haftalık sınırın 1 TB olarak ayarlandığı ve aşıldığı yeni sorgunun yürütülmesi durumunda hata iletisi şöyle olur:

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

Sonraki adımlar

Sorgularınızı performans açısından iyileştirmeyi öğrenmek için bkz. Sunucusuz SQL havuzu için en iyi yöntemler.