اختبار أداء شائع يُحاكي مستودع البيانات الداخلي لمورّد جملة. تُخزَّن البيانات وفق تمثيل الصيغة العادية الثالثة، مما يتطلب عددًا كبيرًا من عمليات JOIN عند تنفيذ الاستعلامات. ورغم قِدمه وافتراضه غير الواقعي بأن البيانات موزعة توزيعًا منتظمًا ومستقلًا، لا يزال TPC-H حتى اليوم أكثر اختبارات الأداء OLAP شيوعًا.
مراجع
- TPC-H
- New TPC Benchmarks for Decision Support and Web Commerce (Poess et. al., 2000)
- TPC-H Analyzed: Hidden Messages and Lessons Learned from an Influential Benchmark (Boncz et. al.), 2013
- Quantifying TPC-H Choke Points and Their Optimizations (Dresseler et. al.), 2020
إنشاء البيانات واستيرادها
أولاً، استنسخ مستودع TPC-H ثم قم بتجميع مُولِّد البيانات:
git clone https://github.com/gregrahn/tpch-kit.git
cd tpch-kit/dbgen
makeبعد ذلك، ولِّد البيانات. تحدد المعلمة -s عامل القياس. على سبيل المثال، عند استخدام -s 100، يتم إنشاء 600 مليون صف في الجدول 'lineitem'.
./dbgen -s 100لتسريع العملية، يمكنك استخدام التوليد "المجزّأ" (عبر عمليات متعددة):
for i in $(seq 1 8); do
./dbgen -s 100 -C 8 -S $i &
done
waitالأحجام التفصيلية للجداول مع عامل القياس مقداره 100:
| الجدول | الحجم (بالصفوف) | الحجم (مضغوطًا في ClickHouse) |
|---|---|---|
| nation | 25 | 2 kB |
| region | 5 | 1 kB |
| part | 20.000.000 | 895 MB |
| supplier | 1.000.000 | 75 MB |
| partsupp | 80.000.000 | 4.37 GB |
| customer | 15.000.000 | 1.19 GB |
| orders | 150.000.000 | 6.15 GB |
| lineitem | 600.000.000 | 26.69 GB |
(الأحجام المضغوطة في ClickHouse مأخوذة من system.tables.total_bytes وتعتمد على تعريفات الجداول الواردة أدناه.)
أنشئ الآن الجداول في ClickHouse. تعريفات الجداول متاحة في init.sql في مستودع ClickHouse.
يمكن استيراد البيانات كما يلي:
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO nation FORMAT CSV" < nation.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO region FORMAT CSV" < region.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO part FORMAT CSV" < part.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO supplier FORMAT CSV" < supplier.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO partsupp FORMAT CSV" < partsupp.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO orders FORMAT CSV" < orders.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO lineitem FORMAT CSV" < lineitem.tblالاستعلامات
يمكن العثور على استعلامات TPC-H الـ22 هنا في مستودع ClickHouse.
للحصول على سلوك متوافق مع معيار SQL ونتائج مطابقة للمتوقع، طبّق الإعدادات من settings.json. راجع README للاطلاع على المشكلات المعروفة والملاحظات الخاصة ببعض الاستعلامات.
صحة النتائج
تتوافق نتائج الاستعلامات مع النتائج الرسمية ما لم يُذكر خلاف ذلك. للتحقق، أنشئ قاعدة بيانات TPC-H بعامل القياس = 1 (dbgen، انظر أعلاه)، ثم قارنها مع النتائج المتوقعة في tpch-kit.
اختبار الأداء
يتتبّع ClickHouse أداء استعلامات TPC-H في كل إصدار منشور. يمكنك استكشاف أزمنة تشغيل استعلامات TPC-H الـ22 جميعها (عامل القياس 40) في صفحة اختبار إصدارات ClickHouse للأداء لمعرفة كيف تطوّر الأداء بمرور الوقت.