Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede sunucusuz SQL havuzunu kullanmaya yönelik en iyi yöntemlerin bir koleksiyonunu bulacaksınız. Sunucusuz SQL havuzu, Azure Synapse Analytics'teki bir kaynaktır. Ayrılmış bir SQL havuzuyla çalışıyorsanız, belirli yönergeler için Ayrılmış SQL havuzları için en iyi yöntemler'e bakın.
Sunucusuz SQL havuzu, Azure Depolama hesaplarınızdaki dosyaları sorgulamanızı sağlar. Yerel depolama veya veri alma özelliklerine sahip değildir. Sorguların hedeflediğini tüm dosyalar sunucusuz SQL havuzunun dışındadır. Depolamadan dosya okumayla ilgili her şey sorgu performansını etkileyebilir.
Bazı genel yönergeler şunlardır:
- İstemci uygulamalarınızın sunucusuz SQL havuzuyla eş konumda bulunduğundan emin olun.
- Azure dışında istemci uygulamaları kullanıyorsanız istemci bilgisayarınıza sunucusuz SQL havuzu yakın bir bölgede kullandığınızdan emin olun. Power BI Desktop, SQL Server Management Studio ve Azure Data Studio istemci uygulaması örnekleri arasında yer alır.
- Depolama alanı ve sunucusuz SQL havuzunun aynı bölgede bulunduğundan emin olun. Depolama alanına örnek olarak Azure Data Lake Storage ve Azure Cosmos DB verilebilir.
- Bölümleme kullanarak ve dosyalarınızı 100 MB ile 10 GB arasında tutarak depolama düzenini iyileştirmeyi deneyin.
- Çok sayıda sonuç alıyorsanız Azure Synapse Studio'yu değil SQL Server Management Studio'yu veya Azure Data Studio'yu kullandığınızdan emin olun. Azure Synapse Studio, büyük sonuç kümeleri için tasarlanmamış bir web aracıdır.
- Sonuçları dize sütununa göre filtrelediyseniz harmanlama kullanmayı
BIN2_UTF8deneyin. Harmanlamaları değiştirme hakkında daha fazla bilgi için Synapse SQL için desteklenen harmanlama türleri kısmına bkz. - Power BI içeri aktarma modunu veya Azure Analysis Services'i kullanarak sonuçları istemci tarafında önbelleğe almayı ve bunları düzenli aralıklarla yenilemeyi göz önünde bulundurun. Karmaşık sorgular kullanıyorsanız veya çok büyük miktarlarda veri işliyorsanız, sunucusuz SQL havuzları Power BI Direct Query modunda etkileşimli bir deneyim sağlayamaz.
- Eşzamanlılık üst sınırı sınırlı değildir ve sorgu karmaşıklığı ve taranan veri miktarına bağlıdır. Sunucusuz bir SQL havuzu, basit sorgular yürüten 1.000 etkin oturumu eş zamanlı olarak idare edebilir. Sorgular daha karmaşıksa veya daha fazla miktarda veri taranacaksa bu sayı daha düşük olacaktır. Bu nedenle bu durumda eş zamanlı kullanımı azaltmayı ve mümkünse sorguları daha uzun bir süre boyunca yürütmeyi göz önünde bulundurun.
İstemci uygulamaları ve ağ bağlantıları
İstemci uygulamanızın mümkün olan en yakın Azure Synapse çalışma alanına en uygun bağlantıyla bağlandığından emin olun.
- İstemci uygulamasını Azure Synapse çalışma alanıyla aynı konumda bulundurun. Power BI veya Azure Analysis Service gibi uygulamalar kullanıyorsanız, bunların Azure Synapse çalışma alanınızı yerleştirdiğiniz bölgede bulunduğundan emin olun. Gerekirse, istemci uygulamalarınızla eşleştirilmiş ayrı çalışma alanları oluşturun. bir istemci uygulamasının ve Azure Synapse çalışma alanının farklı bölgelere yerleştirilmesi daha büyük gecikme süresine ve daha yavaş sonuç akışına neden olabilir.
- Şirket içi uygulamanızdaki verileri okuyorsanız Azure Synapse çalışma alanının konumunuza yakın olan bölgede olduğundan emin olun.
- Büyük miktarda veri okurken ağ bant genişliği sorunları olmadığından emin olun.
- Büyük miktarda veri döndürmek için Azure Synapse Studio kullanmayın. Azure Synapse Studio, verileri aktarmak için HTTPS protokolunu kullanan bir web aracıdır. Büyük miktarda veriyi okumak için Azure Data Studio veya SQL Server Management Studio kullanın.
Depolama ve içerik düzeni
Sunucusuz SQL havuzundaki depolama ve içerik düzeni için en iyi yöntemler aşağıdadır.
Depolama alanınızı ve sunucusuz SQL havuzunuzu aynı ortamda yerleştirin.
Gecikme süresini en aza indirmek için Azure Depolama hesabınızı veya Azure Cosmos DB analiz depolama alanınızı ve sunucusuz SQL havuzu uç noktanızı bir arada konumlandırın. Çalışma alanı oluşturma sırasında sağlanan depolama hesapları ve uç noktaları aynı bölgede bulunur.
En iyi performans için sunucusuz SQL havuzuna sahip diğer depolama hesaplarına erişiyorsa bunların aynı bölgede olduğundan emin olun. Bunlar aynı bölgede değilse, uzak bölge ile uç noktanın bölgesi arasında verilerin ağ aktarımı için gecikme süresi artar.
Azure Cosmos DB analitik depolama alanınızı ve sunucusuz SQL havuzunuzu bir araya getirme
Azure Cosmos DB analiz depolama alanınızın bir Azure Synapse çalışma alanıyla aynı bölgeye yerleştirildiğinden emin olun. Bölgeler arası sorgular çok büyük gecikmelere neden olabilir. Analiz deposunun yerleştirildiği bölgeyi açıkça belirtmek için bağlantı dizesi bölge özelliğini kullanın (bkz. Sunucusuz SQL havuzunu kullanarak Azure Cosmos DB'yi sorgulama):account=<database account name>;database=<database name>;region=<region name>'
Azure Depolama azaltma
Depolama hesabınıza birden çok uygulama ve hizmet erişebilir. Depolama azaltma, uygulamalar, hizmetler ve sunucusuz SQL havuzu iş yükleri tarafından oluşturulan birleştirilmiş IOPS veya aktarım hızı depolama hesabının sınırlarını aştığında oluşur. Sonuç olarak, sorgu performansı üzerinde önemli bir olumsuz etkiyle karşılaşırsınız.
Azaltma algılandığında sunucusuz SQL havuzu bunu çözmek için yerleşik işlemeye sahiptir. Sunucusuz SQL havuzu, kısıtlama çözümlenene kadar depolamaya daha yavaş bir hızda istek gönderir.
İpucu
En iyi sorgu yürütme için, sorgu yürütme sırasında depolama hesabını diğer iş yükleriyle strese atmayın.
Dosyaları sorgulamaya hazırlama
Mümkünse, dosyaları daha iyi performans için hazırlayabilirsiniz:
- Büyük CSV ve JSON dosyalarını Parquet'e dönüştürün. Parquet sütunlu bir biçimdir. Sıkıştırılmış olduğundan, dosya boyutları aynı verileri içeren CSV veya JSON dosyalarından daha küçüktür. Sunucusuz SQL havuzu, Parquet dosyalarını okuyorsanız sorguda gerekli olmayan sütunları ve satırları atlar. Sunucusuz SQL havuzunun okunması için daha az zamana ve daha az depolama isteğine ihtiyacı vardır.
- Bir sorgu tek bir büyük dosyayı hedeflediyse, bu dosyayı birden çok küçük dosyaya bölme avantajından yararlanabilirsiniz.
- CSV dosya boyutunuzu 100 MB ile 10 GB arasında tutmaya çalışın.
- Tek bir OPENROWSET yolu veya dış tablo LOCATION için dosyaların eşit boyutlarda olması daha iyidir.
- Bölümleri farklı klasörlere veya dosya adlarına depolayarak verilerinizi bölümleyin. Bkz. Belirli bölümleri hedeflemek için dosya adı ve dosya yolu işlevlerini kullanma.
CSV iyileştirmeleri
Sunucusuz SQL havuzunda CSV dosyalarını kullanmaya yönelik en iyi yöntemler aşağıdadır.
CSV dosyalarını sorgulamak için PARSER_VERSION 2.0 kullanma
CSV dosyalarını sorgularken performans açısından iyileştirilmiş ayrıştırıcı kullanabilirsiniz. Ayrıntılar için bkz . PARSER_VERSION.
CSV dosyaları için istatistikleri el ile oluşturma
Sunucusuz SQL havuzu, en iyi sorgu yürütme planlarını oluşturmak için istatistiklere dayanır. İstatistikler örnekleme kullanılarak sütunlar için otomatik olarak oluşturulur ve çoğu durumda örnekleme yüzdesi %100'den az olur. Bu akış her dosya biçimi için aynıdır. CSV dosyalarını ayıklayıcı sürüm 1.0 ile okurken örnekleme desteği olmadığını ve %100'den düşük örnekleme yüzdesiyle otomatik istatistik oluşturulmayacağını unutmayın. Tahmini düşük kardinaliteye (satır sayısı) sahip küçük tablolar için otomatik istatistik oluşturma işlemi %100 örnekleme yüzdesiyle tetiklenir. Bu, tam taramanın tetiklendiğini ve ayrıştırıcı sürüm 1.0 ile CSV için bile otomatik istatistiklerin oluşturulduğu anlamına gelir. İstatistiklerin otomatik olarak oluşturulmaması durumunda sorgularda kullandığınız sütunlar için, özellikle DISTINCT, JOIN, WHERE, ORDER BY ve GROUP BY içinde kullanılan sütunlar için el ile istatistikler oluşturun. Ayrıntılar için sunucusuz SQL havuzundaki istatistikleri denetleyin.
Delta Lake iyileştirmeleri
Delta Lake dosyalarını sunucusuz SQL havuzunda kullanmaya yönelik en iyi yöntemler aşağıdadır.
Denetim noktalarını iyileştirme
Delta Lake biçiminin sorgu performansı, _delta_log dizinindeki JSON dosyalarının sayısından etkilenir. En iyi performansı sağlamak için çok fazla JSON dosyası biriktirmekten kaçının. İdeal olan günlük, ek JSON dosyası içermeyen yalnızca en son Parquet denetim noktası dosyasını içermelidir. Ancak, bu kurulum yoğun yazma iş yükleri için en uygun olmayabilir.
Dengeli bir yaklaşım, denetim noktaları arasında yaklaşık 10 JSON dosyası tutmaktır ve bu da genellikle hem okuyucular hem de yazarlar için iyi bir performans sunar. Aşırı JSON dosyası birikmesine ve sorgu performansının düşmesine neden olabileceğinden denetim noktası oluşturmayı geciktiren yapılandırmalara dikkat edin.
Her 10 JSON günlük dosyasından sonra bir denetim noktası oluşturulmasını sağlamak için aşağıdaki tablo özelliğini ayarlayın:
ALTER TABLE tableName SET TBLPROPERTIES ('delta.checkpointInterval' = '10')
Veri türleri
Sunucusuz SQL havuzunda veri türlerini kullanmaya yönelik en iyi yöntemler aşağıdadır.
Uygun veri türlerini kullanma
Sorgunuzda kullandığınız veri türleri performansı ve eşzamanlılığı etkiler. Bu yönergeleri izlerseniz daha iyi performans elde edebilirsiniz:
- Mümkün olan en büyük değeri barındırabilecek en küçük veri boyutunu kullanın.
- Maksimum karakter değeri uzunluğu 30 karakter ise, 30 uzunluğunda bir karakter veri türü kullanın.
- Tüm karakter sütunu değerleri sabit boyuttaysa, char veya nchar kullanın. Aksi takdirde varchar veya nvarchar kullanın.
- En büyük tamsayı sütun değeri 500 ise smallint kullanın çünkü bu değere uyum sağlayabilen en küçük veri türüdür. Daha fazla bilgi için bkz . tamsayı veri türü aralıkları.
- tr-TR: Mümkünse varchar ve char yerine nvarchar ve nchar kullanın.
- Parquet, Azure Cosmos DB, Delta Lake veya UTF-8 kodlamalı CSV'den veri okuyorsanız, bazı UTF8 harmanlaması ile varchar türünü kullanın.
- CSV Unicode olmayan dosyalardan (örneğin, ASCII) veri okuyorsanız UTF8 harmanlaması olmadan varchar türünü kullanın.
- CSV UTF-16 dosyasından veri okuyorsanız nvarchar türünü kullanın.
- Mümkünse tamsayı tabanlı veri türlerini kullanın. SIRALAMA, JOIN ve GROUP BY işlemleri tamsayılarda karakter verilerine göre daha hızlı tamamlanır.
- Şema çıkarımı kullanıyorsanız, çıkarsanan veri türlerini denetleyin ve mümkünse bunları daha küçük türlerle açıkça geçersiz kılın.
Çıkarsanan veri türlerini denetleme
Şema çıkarımı , dosya şemalarını bilmeden hızlı bir şekilde sorgu yazmanıza ve verileri keşfetmenize yardımcı olur. Bu kolaylığın maliyeti, çıkarsanan veri türlerinin gerçek veri türlerinden daha büyük olmasıdır. Bu tutarsızlık, kaynak dosyalarda uygun veri türünün kullanıldığından emin olmak için yeterli bilgi olmadığında gerçekleşir. Örneğin, Parquet dosyaları maksimum karakter sütunu uzunluğuyla ilgili meta veriler içermez. Bu nedenle sunucusuz SQL havuzu bunu varchar(8000) olarak çıkarsar.
SQL altyapısında dış tablolar olarak kullanıma sunulan paylaşılabilir yönetilen ve dış Spark tablolarında durumun farklı olabileceğini unutmayın. Spark tabloları Synapse SQL altyapılarından farklı veri türleri sağlar. Spark tablosu veri türleri ile SQL türleri arasında eşleme burada bulunabilir.
Sorgunuzun elde edilen veri türlerini denetlemek için sistem saklı yordamını sp_describe_first_results_set kullanabilirsiniz.
Aşağıdaki örnek, çıkarım yapılan veri türlerini nasıl iyileştirebileceğinizi gösterir. Bu yordam, çıkarsanan veri türlerini göstermek için kullanılır:
EXEC sp_describe_first_result_set N'
SELECT
vendor_id, pickup_datetime, passenger_count
FROM
OPENROWSET(
BULK ''https://sqlondemandstorage.blob.core.windows.net/parquet/taxi/*/*/*'',
FORMAT=''PARQUET''
) AS nyc';
Sonuç kümesi aşağıdadır:
| gizli | sütun_sırası | Adı | sistem_tipi_adı | maks_uzunluk |
|---|---|---|---|---|
| 0 | 1 | satıcı kimliği | varchar(8000) | 8.000 |
| 0 | 2 | alma_tarihi_saat | datetime2(7) | 8 |
| 0 | 3 | yolcu sayısı | Int | 4 |
Sorgu için çıkarılan veri türlerini bildikten sonra uygun veri türlerini belirtebilirsiniz:
SELECT
vendorID, tpepPickupDateTime, passengerCount
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=2018/puMonth=*/*.snappy.parquet',
FORMAT='PARQUET'
)
WITH (
vendorID varchar(4), -- we used length of 4 instead of the inferred 8000
tpepPickupDateTime datetime2,
passengerCount int
) AS nyc;
Filtre iyileştirme
Sunucusuz SQL havuzunda sorguları kullanmaya yönelik en iyi yöntemler aşağıdadır.
Yoldaki alt düzeylere joker karakter gönderme
Birden çok dosya ve klasörü sorgulamak için yolunuzda joker karakterler kullanabilirsiniz. Sunucusuz SQL havuzu, depolama API'sini kullanarak ilk yıldız işaretinden (*) başlayarak depolama hesabınızdaki dosyaları listeler. Belirtilen yolla eşleşmeyen dosyaları eler. İlk joker karaktere gelene kadar belirtilen yolla eşleşen çok fazla dosya varsa, başlangıçtaki dosya listesini kısaltmak performansı geliştirebilir.
Belirli bölümleri hedeflemek için dosya adı ve dosya yolu işlevlerini kullanma
Veriler genellikle bölümler halinde düzenlenir. Sunucusuz SQL havuzuna belirli klasörleri ve dosyaları sorgulamasını sağlayabilirsiniz. Bunun yapılması, dosya sayısını ve sorgunun okuması ve işlemesi gereken veri miktarını azaltır. Ek olarak daha iyi bir performans elde edersiniz.
Daha fazla bilgi için dosya adı ve dosya yolu işlevleri hakkında bilgi edinin ve belirli dosyaları sorgulama örneklerine bakın.
İpucu
Dosya yolu ve dosya adı işlevlerinin sonuçlarını her zaman uygun veri türlerine dönüştürebilirsiniz. Karakter veri türlerini kullanıyorsanız uygun uzunluğu kullandığınızdan emin olun.
Bölüm eleme, dosya yolu ve dosya adı için kullanılan işlevler, Azure Synapse Analytics için Apache Spark'ta oluşturulan her tablo için otomatik olarak oluşturulanlar dışında şu anda dış tablolar için desteklenmemektedir.
Depolanan verileriniz bölümlenmemişse bölümleme işlemini göz önünde bulundurun. Bu şekilde, bu dosyaları hedefleyen sorguları iyileştirmek için bu işlevleri kullanabilirsiniz. Sunucusuz SQL havuzundan bölümlenmiş Azure Synapse için Apache Spark tablolarını sorguladığınızda, sorgu otomatik olarak yalnızca gerekli dosyaları hedefler.
Karakter sütunları için koşul aşağı itme özelliğini kullanmak için uygun harmanlamayı kullanın
Parquet dosyasındaki veriler satır gruplarında düzenlenir. Sunucusuz SQL havuzu, WHERE yan tümcesinde belirtilen koşula göre satır gruplarını atlar ve bu da GÇ’yi azaltır. Sonuç, sorgu performansını artırır.
Parquet dosyalarındaki karakter sütunları için koşul optimizasyonu yalnızca Latin1_General_100_BIN2_UTF8 harmanlama için desteklenir. WITH yan tümcesini kullanarak belirli bir sütun için harmanlama belirtebilirsiniz. Bir WITH yan tümcesi kullanarak bu harmanlamayı belirtmezseniz, veritabanı harmanlaması kullanılır.
Yinelenen sorguları iyileştirme
Sunucusuz SQL havuzunda CETAS kullanmaya yönelik en iyi yöntemler aşağıdadır.
Sorgu performansını ve birleşimlerini geliştirmek için CETAS kullanma
CETAS , sunucusuz SQL havuzunda kullanılabilen en önemli özelliklerden biridir. CETAS, dış tablo meta verilerini oluşturan ve SELECT sorgu sonuçlarını depolama hesabınızdaki bir dosya kümesine aktaran paralel bir işlemdir.
CETAS'ı kullanarak sorguların birleştirilmiş başvuru tabloları gibi sık kullanılan bölümlerini yeni bir dosya kümesine oluşturabilirsiniz. Daha sonra birden çok sorguda ortak birleştirmeleri yinelemek yerine bu tek dış tabloya katılabilirsiniz.
CETAS Parquet dosyaları oluştururken, ilk sorgu bu dış tabloyu hedeflediğinde istatistikler otomatik olarak oluşturulur. Sonuç, CETAS ile oluşturulan tabloyu hedefleyen sonraki sorgular için iyileştirilmiş performanstır.
Azure verilerini sorgulama
Sunucusuz SQL havuzları, dış tabloları ve OPENROWSET işlevini kullanarak Azure Depolama veya Azure Cosmos DB'deki verileri sorgulamanızı sağlar. Depolama alanınızda uygun izinlerin ayarlandığından emin olun.
CSV verilerini sorgulama
Tek bir CSV dosyasını veya klasörünü ve birden çok CSV dosyasını sorgulamayı öğrenin. Bölümlenmiş dosyaları da sorgulayabilirsiniz
Parquet verilerini sorgulama
İç içe türler içeren Parquet dosyalarını sorgulamayı öğrenin. Bölümlenmiş dosyaları da sorgulayabilirsiniz.
Delta Lake'i Sorgulama
Delta Lake dosyalarını iç içe türleriyle sorgulamayı öğrenin.
Azure Cosmos DB verilerini sorgulama
Azure Cosmos DB analiz deposunu sorgulamayı öğrenin. Bir çevrimiçi oluşturucu kullanarak örnek bir Azure Cosmos DB belgesini temel alan WITH yan tümcesini oluşturabilirsiniz. Azure Cosmos DB kapsayıcılarının üzerinde görünümler oluşturabilirsiniz.
JSON verilerini sorgulama
JSON dosyalarını sorgulamayı öğrenin. Bölümlenmiş dosyaları da sorgulayabilirsiniz.
Görünümler, tablolar ve diğer veritabanı nesneleri oluşturma
Görünümleri ve dış tabloları oluşturmayı ve kullanmayı ya da satır düzeyi güvenlik ayarlamayı öğrenin. Bölümlenmiş dosyalarınız varsa bölümlenmiş görünümleri kullandığınızdan emin olun.
Verileri kopyalama ve dönüştürme (CETAS)
CETAS komutunu kullanarak sorgu sonuçlarını depolamayı öğrenin.
Sonraki adımlar
- Yaygın sorunların çözümleri için sunucusuz SQL havuzları sorunlarını giderme makalesini gözden geçirin.
- Sunucusuz SQL havuzu yerine ayrılmış bir SQL havuzuyla çalışıyorsanız, belirli yönergeler için Ayrılmış SQL havuzları için en iyi yöntemler bölümüne bakın.
- Azure Synapse Analytics ile ilgili sık sorulan sorular
- Çalışma alanı yönetilen kimliğine izinler ver