تصميم الجداول باستخدام Synapse SQL في Azure Synapse Analytics
يتضمن هذا المستند المفاهيم الرئيسية لتصميم الجداول باستخدام تجمع SQL مخصص وتجمع SQL بلا خادم.
تجمع SQL بلا خادم هو خدمة استعلام حول البيانات في مستودع البيانات. لا يحتوي على تخزين محلي لاستيعاب البيانات. تجمع SQL مخصص يمثل مجموعة من الموارد التحليلية التي يتم توفيرها عند استخدام Synapse SQL. تحدد وحدات مستودع البيانات (DWU) حجم تجمع SQL المخصص.
يسرد الجدول التالي الموضوعات ذات الصلة بتجمع SQL المخصص مقابل تجمع SQL بلا خادم:
الموضوع | تجمع SQL المخصص | تجمع SQL بلا خادم |
---|---|---|
تحديد فئة الجدول | نعم | لا |
أسماء المخططات | نعم | نعم |
أسماء الجداول | نعم | لا |
استمرار جدول | نعم | لا |
جدول عادي | نعم | لا |
جدول مؤقت | نعم | نعم |
جدول خارجي | نعم | نعم |
أنواع البيانات | نعم | نعم |
الجداول الموزعة | نعم | لا |
الجداول الموزعة باستخدام نمط التجزئة | نعم | لا |
الجداول المنسوخة بشكل متماثل | نعم | لا |
جداول بطريقة راوند روبن | نعم | لا |
طرق التوزيع الشائعة للجداول | نعم | لا |
التقسيمات | نعم | نعم |
مؤشرات تخزين الأعمدة | نعم | لا |
الإحصائيات | نعم | نعم |
المفتاح الأساسي والمفتاح الفريد | نعم | لا |
أوامر لإنشاء جداول | نعم | لا |
محاذاة بيانات المصدر مع مستودع البيانات | نعم | لا |
ميزات الجدول غير المعتمدة | نعم | لا |
استعلامات حجم الجدول | نعم | لا |
تحديد فئة الجدول
ينظم مخطط نجمي البيانات في جداول الحقائق والأبعاد. يتم استخدام بعض الجداول للتكامل أو التقسيم المرحلي للبيانات قبل انتقالها إلى جدول الحقائق أو الأبعاد. أثناء تصميم جدول، حدد ما إذا كانت بيانات الجدول تنتمي إلى جدول حقائق أو أبعاد أو تكامل. ويفيد هذا القرار بنية الجدول المناسبة والتوزيع.
تحتوي جداول الحقائق على بيانات كمية يتم إنشاؤها عادة في نظام المعاملات، ثم يتم تحميلها في مستودع البيانات. على سبيل المثال، تقوم شركة البيع بالتجزئة بإنشاء معاملات مبيعات كل يوم، ثم تقوم بتحميل البيانات في جدول حقائق بمستودع بيانات للتحليل.
تحتوي جداول الأبعاد على بيانات سمة قد تتغير، ولكن عادة ما تتغير بشكل غير متكرر. على سبيل المثال، يتم تخزين اسم العميل وعنوانه في جدول أبعاد ويتم تحديثه فقط عند تغيير ملف تعريف العميل. لتقليل حجم جدول حقائق كبير، لا يلزم أن يكون اسم العميل وعنوانه في كل صف من جدول الحقائق. بدلاً من ذلك، يمكن لجدول الحقائق وجدول البُعد مشاركة معرف عميل. يمكن للاستعلام الانضمام إلى الجدولين لربط ملف تعريف العميل وحركاته.
توفر جداول التكامل مكانًا للتكامل أو التقسيم المرحلي للبيانات. يمكنك إنشاء جدول تكامل كجدول عادي أو جدول خارجي أو جدول مؤقت. على سبيل المثال، يمكنك تحميل البيانات إلى جدول تقسيم مرحلي، وإجراء تحويلات على البيانات في التقسيم المرحلي، ثم إدراج البيانات في جدول إنتاج.
أسماء المخططات
المخططات هي طريقة جيدة لتجميع العناصر التي يتم استخدامها بطريقة مماثلة. تنشئ التعليمات البرمجية التالية مخططًا معرفًا من قبل المستخدم يسمى wwi.
CREATE SCHEMA wwi;
أسماء الجداول
إذا كنت تقوم بترحيل قواعد بيانات متعددة من حل داخلي إلى تجمع SQL مخصص، فإنه من الأفضل ترحيل جميع جداول الحقائق والأبعاد والتكامل إلى مخطط تجمع SQL واحد. على سبيل المثال، يمكنك تخزين جميع الجداول في نموذج مستودع البيانات WideWorldImportersDW ضمن مخطط واحد يسمى wwi.
لإظهار تنظيم الجداول في تجمع SQL المخصص، يمكنك استخدام حقائق وأبعاد وتكامل كبادئات لأسماء الجداول. يعرض الجدول أدناه بعض أسماء المخططات والجداول لـ WideWorldImportersDW.
جدول WideWorldImportersDW | نوع الجدول | تجمع SQL المخصص |
---|---|---|
المدينة | البعد | wwi.DimCity |
الترتيب | الحقيقة | wwi.FactOrder |
استمرار الجدول
تخزن الجداول البيانات إما بشكل دائم في Azure Storage، أو بشكل مؤقت في Azure Storage، أو في مخزن بيانات خارجي إلى مستودع البيانات.
الجدول العادي
يخزن الجدول العادي البيانات في Azure Storage كجزء من مستودع البيانات. يستمر الجدول والبيانات سواء كان توجد جلسة مفتوحة أم لا. ينشئ المثال أدناه جدولاً عاديًا بعمودين.
CREATE TABLE MyTable (col1 int, col2 int );
الجدول المؤقت
يوجد الجدول المؤقت طوال مدة الجلسة فقط. يمكنك استخدام جدول مؤقت لمنع المستخدمين الآخرين من رؤية النتائج المؤقتة. استخدام الجداول المؤقتة يقلل أيضًا من الحاجة إلى التنظيف. تستخدم الجداول المؤقتة التخزين المحلي، وفي تجمعات SQL المخصصة، يمكن أن تقدم أداء أسرع.
يدعم تجمع SQL بلا خادم الجداول المؤقتة. ولكن استخدامه محدود لأنه يمكنك التحديد من جدول مؤقت ولكن لا يمكن ربطه بالملفات في التخزين.
لمزيد من المعلومات، راجع الجداول المؤقتة.
الجدول الخارجي
يشير الجدول الخارجي إلى البيانات الموجودة في الكائن الثنائي كبير الحجم Azure Storage أو Azure Data Lake Storage.
قم باستيراد البيانات من الجداول الخارجية إلى تجمعات SQL المخصصة باستخدام عبارة CREATE TABLE AS SELECT. للحصول على برنامج تعليمي للتحميل، انظر استخدام PolyBase لتحميل البيانات من تخزين الكائن الثنائي كبير الحجم في Azure.
بالنسبة إلى تجمع SQL بلا خادم، يمكنك استخدام CETAS لحفظ نتيجة الاستعلام في جدول خارجي في Azure Storage.
أنواع البيانات
يدعم تجمع SQL المخصص أنواع البيانات المستخدمة الأكثر شيوعًا. للحصول على قائمة أنواع البيانات المدعومة، راجع أنواع البيانات في مرجع CREATE TABLE في عبارة CREATE TABLE. لمزيد من المعلومات حول استخدام أنواع البيانات، راجع أنواع البيانات.
الجداول الموزعة
إحدى الميزات الأساسية لتجمع SQL المخصص هي الطريقة التي يمكنه بها تخزين الجداول والعمل عليها عبر التوزيعات. يدعم تجمع SQL المخصص ثلاث طرق لتوزيع البيانات:
- الترتيب الدوري (افتراضي)
- التجزئة
- منسوخ بشكل متماثل
الجداول الموزعة باستخدام نمط التجزئة
يوزع جدول التجزئة الموزع الصفوف استنادًا إلى القيمة الموجودة في عمود التوزيع. تم تصميم جدول التجزئة الموزع لتحقيق أداء عالٍ للاستعلامات على الجداول الكبيرة. هناك عدة عوامل يجب مراعاتها عند اختيار عمود توزيع.
لمزيد من المعلومات، راجع إرشادات التصميم للجداول الموزعة.
الجداول المنسوخة بشكل متماثل
يحتوي الجدول المنسوخ نسخًا متماثلاً على نسخة كاملة من الجدول المتوفر على كل عقدة حساب. تعمل الاستعلامات بسرعة على الجداول المنسوخة نسخًا متماثلًا نظرًا إلى أن عمليات الربط على الجداول المنسوخة نسخًا متماثلاً لا تتطلب حركة البيانات. على الرغم من ذلك، النسخ المتماثل يتطلب تخزينًا إضافيًا، وليس عمليًا للجداول الكبيرة.
لمزيد من المعلومات، راجع إرشادات التصميم للجداول المنسوخة نسخًا متماثلاً.
جداول بطريقة راوند روبن
يوزع جدول بطريق راوند روبن صفوف الجدول بالتساوي عبر جميع التوزيعات. يتم توزيع الصفوف عشوائيًا. يتميز تحميل البيانات في الجدول بطريقة راوند روبن بالسرعة. ولكن، يُراعى أن الاستعلامات يمكن أن تتطلب حركة بيانات أكثر من أساليب التوزيع الأخرى.
لمزيد من المعلومات، راجع إرشادات التصميم للجداول الموزعة.
أساليب التوزيع الشائعة للجداول
غالبًا ما تحدد فئة الجدول الخيار الأمثل لتوزيع الجدول.
فئة الجدول | خيار التوزيع الموصى به |
---|---|
الحقيقة | استخدام تجزئة التوزيع مع فهرس مخزن أعمدة متفاوتة المسافات. يتحسن الأداء عندما يتم ربط جدوليّ التجزئة على عمود التوزيع نفسه. |
البُعد | استخدم نسخاً متماثلاً لجداول أصغر. إذا كانت الجداول كبيرة للغاية لتخزين على كل عقدة Compute فاستخدم التجزئة الموزعة. |
التشغيل المرحلي | استخدم round-robin لطاولة التدريج. يكون الحمل مع CTAS سريعاً. بمجرد أن تكون البيانات في الجدول المرحلي، استخدم INSERT...SELECT لنقل البيانات إلى جداول الإنتاج. |
التقسيمات
في تجمعات SQL المخصصة، يقوم الجدول المقسم بتخزين وتنفيذ العمليات على صفوف الجدول وفقًا لنطاقات البيانات. على سبيل المثال، يمكن تقسيم جدول حسب اليوم أو الشهر أو السنة. يمكنك تحسين أداء الاستعلام من خلال إزالة القسم، ما يحد من فحص الاستعلام للبيانات داخل القسم.
يمكنك أيضًا الاحتفاظ بالبيانات من خلال تبديل القسم. نظرًا إلى أن البيانات في تجمع SQL مخصص موزعة بالفعل، يمكن للعديد من الأقسام إبطاء أداء الاستعلام. لمزيد من المعلومات، راجع إرشادات التقسيم.
تلميح
عند تبديل القسم إلى أقسام جدول غير فارغة، ضع في اعتبارك استخدام خيار TRUNCATE_TARGET في عبارة ALTER TABLE إذا كان سيتم اقتطاع البيانات الموجودة.
تقوم التعليمات البرمجية أدناه بتبديل البيانات اليومية المحولة إلى قسم SalesFact والكتابة فوق أي بيانات موجودة.
ALTER TABLE SalesFact_DailyFinalLoad SWITCH PARTITION 256 TO SalesFact PARTITION 256 WITH (TRUNCATE_TARGET = ON);
في تجمع SQL بلا خادم، يمكنك تحديد الملفات/المجلدات (الأقسام) التي ستتم قراءتها من قِبل الاستعلام. يتم دعم التقسيم حسب المسار باستخدام وظائف filepath وfilinfo الموضحة في الاستعلام عن ملفات التخزين. يقرأ المثال التالي مجلدًا يحتوي على بيانات لسنة 2017:
SELECT
nyc.filepath(1) AS [year],
payment_type,
SUM(fare_amount) AS fare_total
FROM
OPENROWSET(
BULK 'https://sqlondemandstorage.blob.core.windows.net/parquet/taxi/year=*/month=*/*.parquet',
FORMAT='PARQUET'
) AS nyc
WHERE
nyc.filepath(1) = 2017
GROUP BY
nyc.filepath(1),
payment_type
ORDER BY
nyc.filepath(1),
payment_type
مؤشرات تخزين الأعمدة
بشكل افتراضي، يخزن تجمع SQL المخصص جدولاً كمؤشر تخزين أعمدة بنظام المجموعة. يحقق هذا الشكل من تخزين البيانات ضغطًا عاليًا للبيانات وأداءً عاليًا للاستعلام على جداول كبيرة. عادة ما يكون مؤشر تخزين الأعمدة بنظام المجموعة هو الخيار الأفضل، ولكن في بعض الحالات يكون المؤشر بنظام المجموعة أو كومة الذاكرة المؤقتة هي بنية التخزين المناسبة.
تلميح
يمكن أن يكون جدول كومة الذاكرة المؤقتة مفيدًا بشكل خاص لتحميل البيانات العابرة، مثل جدول تقسيم مرحلي يتم تحويله إلى جدول نهائي.
للحصول على قائمة ميزات تخزين الأعمدة، راجع ما الجديد في مؤشرات تخزين الأعمدة. لتحسين أداء مؤشر تخزين الأعمدة، راجع تكبير جودة مجموعة الصفوف لمؤشرات تخزين الأعمدة.
الإحصائيات
يستخدم محسّن الاستعلامات إحصائيات على مستوى العمود عند إنشاء الخطة لتنفيذ استعلام. لتحسين أداء الاستعلام، من المهم الحصول على إحصائيات حول الأعمدة الفردية، خاصة الأعمدة المستخدمة في عمليات ربط الاستعلام. يدعم Synapse SQL الإنشاء التلقائي للإحصائيات.
لا يحدث تحديث الإحصائيات تلقائيًا. قم بتحديث الإحصائيات بعد إضافة عدد كبير من الصفوف أو تغييرها. على سبيل المثال، قم بتحديث الإحصائيات بعد التحميل. يتم توفير معلومات إضافية في مقالة إرشادات الإحصائيات.
المفتاح الأساسي والمفتاح الفريد
بالنسبة إلى تجمع SQL المخصص، يتم دعم PRIMARY KEY فقط عند استخدام كل من NONCLUSTERED وNOT ENFORCED. يتم دعم قيد UNIQUE فقط عند استخدام NOT ENFORCED. لمزيد من المعلومات، راجع مقالة قيود جدول تجمع SQL المخصص.
أوامر لإنشاء جداول
بالنسبة إلى تجمع SQL المخصص، يمكنك إنشاء جدول كجدول فارغ جديد. يمكنك أيضًا إنشاء جدول وملؤه بنتائج عبارة تحديد. فيما يلي أوامر T-SQL لإنشاء جدول.
عبارة T-SQL | الوصف |
---|---|
إنشاء جدول | يقوم بإنشاء جدول فارغ عن طريق تعريف كافة أعمدة الجدول وخياراته. |
إنشاء جدول خارجي | يقوم بإنشاء جدول خارجي. يتم تخزين تعريف الجدول في تجمع SQL المخصص. يتم تخزين بيانات الجدول في تخزين Azure Blob أو Azure Data Lake Store. |
إنشاء جدول كمحدد | يقوم بتعبئة جدول جديد بنتائج عبارة تحديد. تستند أعمدة الجدول وأنواع البيانات إلى نتائج عبارة التحديد. لاستيراد البيانات، يمكن تحديد هذه العبارة من جدول خارجي. |
CREATE EXTERNAL TABLE AS SELECT | يقوم بإنشاء جدول خارجي جديد عن طريق تصدير نتائج عبارة تحديد إلى موقع خارجي. الموقع إما تخزين Azure Blob أو Azure Data Lake Store. |
محاذاة بيانات المصدر مع مستودع البيانات
يتم ملء جداول تجمع SQL المخصص عن طريق تحميل البيانات من مصدر بيانات آخر. لتنفيذ تحميل ناجح، يجب أن يتوافق العدد وأنواع البيانات للأعمدة في البيانات المصدر مع تعريف الجدول في مستودع البيانات.
ملاحظة
قد تكون محاذاة البيانات أصعب جزء في تصميم الجداول.
إذا كانت البيانات واردة من مخازن بيانات متعددة، يمكنك نقل البيانات إلى مستودع البيانات وتخزينها في جدول تكامل. بمجرد أن تكون البيانات في جدول التكامل، يمكنك استخدام قوة تجمع SQL المخصص لتنفيذ عمليات التحويل. بمجرد إعداد البيانات، يمكنك إدراجها في جداول الإنتاج.
ميزات الجدول غير المعتمدة
يدعم تجمع SQL المخصص العديد من ميزات الجدول التي تقدمها قواعد البيانات الأخرى، وليس كلها. تعرض القائمة التالية بعض ميزات الجدول غير المعتمدة في تجمع SQL المخصص.
- المفتاح الخارجي، تحقق من قيود الجدول
- الأعمدة المحسوبة
- طرق العرض المفهرسة
- التسلسل
- الأعمدة المتفرقة
- المفاتيح البديلة، يتم التنفيذ مع الهوية
- المرادفات
- أزرار التشغيل
- الفهارس الفريدة
- أنواع User-Defined
استعلامات حجم الجدول
في تجمع SQL المخصص، إحدى الطرق البسيطة لتحديد المساحة والصفوف التي يستهلكها جدول في كل توزيع من 60 توزيعًا، هي استخدام DBCC PDW_SHOWSPACEUSED.
DBCC PDW_SHOWSPACEUSED('dbo.FactInternetSales');
ضع في اعتبارك أن استخدام أوامر DBCC يمكن أن يكون محدودًا للغاية. تظهر طرق عرض الإدارة الديناميكية (DMV) تفاصيل أكثر من أوامر DBCC. ابدأ بإنشاء طريقة العرض أدناه.
CREATE VIEW dbo.vTableSizes
AS
WITH base
AS
(
SELECT
GETDATE() AS [execution_time]
, DB_NAME() AS [database_name]
, s.name AS [schema_name]
, t.name AS [table_name]
, QUOTENAME(s.name)+'.'+QUOTENAME(t.name) AS [two_part_name]
, nt.[name] AS [node_table_name]
, ROW_NUMBER() OVER(PARTITION BY nt.[name] ORDER BY (SELECT NULL)) AS [node_table_name_seq]
, tp.[distribution_policy_desc] AS [distribution_policy_name]
, c.[name] AS [distribution_column]
, nt.[distribution_id] AS [distribution_id]
, i.[type] AS [index_type]
, i.[type_desc] AS [index_type_desc]
, nt.[pdw_node_id] AS [pdw_node_id]
, pn.[type] AS [pdw_node_type]
, pn.[name] AS [pdw_node_name]
, di.name AS [dist_name]
, di.position AS [dist_position]
, nps.[partition_number] AS [partition_nmbr]
, nps.[reserved_page_count] AS [reserved_space_page_count]
, nps.[reserved_page_count] - nps.[used_page_count] AS [unused_space_page_count]
, nps.[in_row_data_page_count]
+ nps.[row_overflow_used_page_count]
+ nps.[lob_used_page_count] AS [data_space_page_count]
, nps.[reserved_page_count]
- (nps.[reserved_page_count] - nps.[used_page_count])
- ([in_row_data_page_count]
+ [row_overflow_used_page_count]+[lob_used_page_count]) AS [index_space_page_count]
, nps.[row_count] AS [row_count]
from
sys.schemas s
INNER JOIN sys.tables t
ON s.[schema_id] = t.[schema_id]
INNER JOIN sys.indexes i
ON t.[object_id] = i.[object_id]
AND i.[index_id] <= 1
INNER JOIN sys.pdw_table_distribution_properties tp
ON t.[object_id] = tp.[object_id]
INNER JOIN sys.pdw_table_mappings tm
ON t.[object_id] = tm.[object_id]
INNER JOIN sys.pdw_nodes_tables nt
ON tm.[physical_name] = nt.[name]
INNER JOIN sys.dm_pdw_nodes pn
ON nt.[pdw_node_id] = pn.[pdw_node_id]
INNER JOIN sys.pdw_distributions di
ON nt.[distribution_id] = di.[distribution_id]
INNER JOIN sys.dm_pdw_nodes_db_partition_stats nps
ON nt.[object_id] = nps.[object_id]
AND nt.[pdw_node_id] = nps.[pdw_node_id]
AND nt.[distribution_id] = nps.[distribution_id]
LEFT OUTER JOIN (select * from sys.pdw_column_distribution_properties where distribution_ordinal = 1) cdp
ON t.[object_id] = cdp.[object_id]
LEFT OUTER JOIN sys.columns c
ON cdp.[object_id] = c.[object_id]
AND cdp.[column_id] = c.[column_id]
WHERE pn.[type] = 'COMPUTE'
)
, size
AS
(
SELECT
[execution_time]
, [database_name]
, [schema_name]
, [table_name]
, [two_part_name]
, [node_table_name]
, [node_table_name_seq]
, [distribution_policy_name]
, [distribution_column]
, [distribution_id]
, [index_type]
, [index_type_desc]
, [pdw_node_id]
, [pdw_node_type]
, [pdw_node_name]
, [dist_name]
, [dist_position]
, [partition_nmbr]
, [reserved_space_page_count]
, [unused_space_page_count]
, [data_space_page_count]
, [index_space_page_count]
, [row_count]
, ([reserved_space_page_count] * 8.0) AS [reserved_space_KB]
, ([reserved_space_page_count] * 8.0)/1000 AS [reserved_space_MB]
, ([reserved_space_page_count] * 8.0)/1000000 AS [reserved_space_GB]
, ([reserved_space_page_count] * 8.0)/1000000000 AS [reserved_space_TB]
, ([unused_space_page_count] * 8.0) AS [unused_space_KB]
, ([unused_space_page_count] * 8.0)/1000 AS [unused_space_MB]
, ([unused_space_page_count] * 8.0)/1000000 AS [unused_space_GB]
, ([unused_space_page_count] * 8.0)/1000000000 AS [unused_space_TB]
, ([data_space_page_count] * 8.0) AS [data_space_KB]
, ([data_space_page_count] * 8.0)/1000 AS [data_space_MB]
, ([data_space_page_count] * 8.0)/1000000 AS [data_space_GB]
, ([data_space_page_count] * 8.0)/1000000000 AS [data_space_TB]
, ([index_space_page_count] * 8.0) AS [index_space_KB]
, ([index_space_page_count] * 8.0)/1000 AS [index_space_MB]
, ([index_space_page_count] * 8.0)/1000000 AS [index_space_GB]
, ([index_space_page_count] * 8.0)/1000000000 AS [index_space_TB]
FROM base
)
SELECT *
FROM size
;
ملخص مساحة الجدول
يقوم هذا الاستعلام بإرجاع الصفوف والمساحة حسب الجدول. يسمح لك ملخص مساحة الجدول برؤية الجداول التي تُعد أكبر الجداول. سترى أيضا ما إذا كانت الجداول بطريقة راوند روبن أو منسوخة نسخًا متماثلاً أو جداول تجزئة موزعة. بالنسبة إلى جداول التجزئة الموعزة، يعرض الاستعلام عمود التوزيع.
SELECT
database_name
, schema_name
, table_name
, distribution_policy_name
, distribution_column
, index_type_desc
, COUNT(distinct partition_nmbr) as nbr_partitions
, SUM(row_count) as table_row_count
, SUM(reserved_space_GB) as table_reserved_space_GB
, SUM(data_space_GB) as table_data_space_GB
, SUM(index_space_GB) as table_index_space_GB
, SUM(unused_space_GB) as table_unused_space_GB
FROM
dbo.vTableSizes
GROUP BY
database_name
, schema_name
, table_name
, distribution_policy_name
, distribution_column
, index_type_desc
ORDER BY
table_reserved_space_GB desc
;
مساحة الجدول حسب نوع التوزيع
SELECT
distribution_policy_name
, SUM(row_count) as table_type_row_count
, SUM(reserved_space_GB) as table_type_reserved_space_GB
, SUM(data_space_GB) as table_type_data_space_GB
, SUM(index_space_GB) as table_type_index_space_GB
, SUM(unused_space_GB) as table_type_unused_space_GB
FROM dbo.vTableSizes
GROUP BY distribution_policy_name
;
مساحة الجدول حسب نوع الفهرس
SELECT
index_type_desc
, SUM(row_count) as table_type_row_count
, SUM(reserved_space_GB) as table_type_reserved_space_GB
, SUM(data_space_GB) as table_type_data_space_GB
, SUM(index_space_GB) as table_type_index_space_GB
, SUM(unused_space_GB) as table_type_unused_space_GB
FROM dbo.vTableSizes
GROUP BY index_type_desc
;
ملخص مساحة التوزيع
SELECT
distribution_id
, SUM(row_count) as total_node_distribution_row_count
, SUM(reserved_space_MB) as total_node_distribution_reserved_space_MB
, SUM(data_space_MB) as total_node_distribution_data_space_MB
, SUM(index_space_MB) as total_node_distribution_index_space_MB
, SUM(unused_space_MB) as total_node_distribution_unused_space_MB
FROM dbo.vTableSizes
GROUP BY distribution_id
ORDER BY distribution_id
;
الخطوات التالية
بعد إنشاء الجداول لمستودع البيانات، فإن الخطوة التالية هي تحميل البيانات إلى الجدول. للحصول على برنامج تعليمي للتحميل، راجع تحميل البيانات إلى تجمع SQL مخصص.