pgbench - عبر الإنترنت في السحابة

هذا هو الأمر pgbench الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


pgbench - قم بإجراء اختبار معياري على PostgreSQL

موجز


com.pgbench -i [خيار...] [com.dbname]

com.pgbench [خيار...] [com.dbname]

الوصف


pgbench هو برنامج بسيط لإجراء اختبارات معيارية على PostgreSQL. يعمل بنفس الطريقة
تسلسل أوامر SQL مرارًا وتكرارًا ، ربما في جلسات قاعدة بيانات متعددة متزامنة ،
ثم يحسب متوسط ​​معدل المعاملة (المعاملات في الثانية). بشكل افتراضي،
يختبر pgbench سيناريو يعتمد بشكل فضفاض على TPC-B ، يتضمن خمسة اختر, قم ,
و INSERT أوامر لكل معاملة. ومع ذلك ، من السهل اختبار الحالات الأخرى عن طريق الكتابة
ملفات البرنامج النصي للمعاملات الخاصة بك.

يبدو الإخراج النموذجي من pgbench كما يلي:

نوع المعاملة: TPC-B (نوع من)
عامل التحجيم: 10
وضع الاستعلام: بسيط
عدد العملاء: 10
عدد الخيوط: 1
عدد المعاملات لكل عميل: 1000
عدد المعاملات التي تمت معالجتها بالفعل: 10000/10000
tps = 85.184871 (بما في ذلك إنشاء الاتصالات)
tps = 85.296346 (باستثناء إنشاء التوصيلات)

تشير الأسطر الستة الأولى إلى بعض أهم إعدادات المعلمات. السطر التالي
يُبلغ عن عدد المعاملات المنجزة والمقصودة (الأخير هو فقط
ناتج عدد العملاء وعدد المعاملات لكل عميل) ؛ ستكون هذه متساوية
إلا إذا فشل التشغيل قبل الانتهاء. (في -T الوضع ، فقط العدد الفعلي لـ
تتم طباعة المعاملات.) يشير آخر سطرين إلى عدد المعاملات في الثانية ،
برزت مع وبدون احتساب الوقت لبدء جلسات قاعدة البيانات.

يتطلب اختبار المعاملات الافتراضي الذي يشبه TPC-B إعداد جداول محددة مسبقًا.
يجب استدعاء pgbench بامتداد -i (تهيئة) الخيار لإنشاء وملء هذه
الجداول. (عندما تختبر برنامجًا نصيًا مخصصًا ، فلن تحتاج إلى هذه الخطوة ، ولكنك ستفعلها بدلاً من ذلك
تحتاج إلى القيام بأي إعداد يحتاجه الاختبار الخاص بك.) تبدو التهيئة كما يلي:

بجبنش -أنا [ خيارات أخرى ] com.dbname

أين com.dbname هو اسم قاعدة البيانات التي تم إنشاؤها بالفعل للاختبار فيها. (قد تحتاج أيضًا إلى
-h, -p، و / أو -U خيارات لتحديد كيفية الاتصال بخادم قاعدة البيانات.)

الحذر
يقوم pgbench -i بإنشاء أربعة جداول pgbench_accounts و pgbench_branches و pgbench_history و
و pgbench_tellers ، مما يؤدي إلى تدمير أي جداول موجودة بهذه الأسماء. كن حذرا جدا ل
استخدم قاعدة بيانات أخرى إذا كان لديك جداول بها هذه الأسماء!

في "عامل القياس" الافتراضي 1 ، تحتوي الجداول في البداية على هذه الصفوف العديدة:

جدول # من الصفوف
---------------------------------
الفروع pgbench 1
10
حسابات pgbench_100000
بجبنش_التاريخ 0

يمكنك (وربما ينبغي لمعظم الأغراض) زيادة عدد الصفوف باستخدام ملف
-s (عامل القياس) الخيار. ال -F يمكن أيضًا استخدام خيار (fillfactor) في هذه المرحلة.

بمجرد الانتهاء من الإعداد اللازم ، يمكنك تشغيل معيار الأداء الخاص بك بأمر
لا يشمل -i، هذا هو

بغبنش [ الخيارات ] com.dbname

في جميع الحالات تقريبًا ، ستحتاج إلى بعض الخيارات لإجراء اختبار مفيد. الأكثر أهمية
الخيارات -c (عدد العملاء)، -t (عدد المعاملات) ، -T (المهلة) ، و -f
(حدد ملف نصي مخصص). انظر أدناه للحصول على قائمة كاملة.

OPTIONS


ينقسم ما يلي إلى ثلاثة أقسام فرعية: يتم استخدام خيارات مختلفة أثناء
تهيئة قاعدة البيانات وأثناء تشغيل المعايير ، تكون بعض الخيارات مفيدة في كليهما
الحالات.

التهيئة مزيد من الخيارات
يقبل pgbench وسيطات تهيئة سطر الأوامر التالية:

-i
- تهيئة
مطلوب لاستدعاء وضع التهيئة.

-F فيلفاكتور
- عامل الملء =فيلفاكتور
قم بإنشاء جداول pgbench_accounts و pgbench_tellers و pgbench_branches بامتداد
عامل ملء معين. الافتراضي هو 100.

-n
--لا فراغ
لا تقم بإجراء كنس بعد التهيئة.

-q
--هادئ
قم بتبديل التسجيل إلى الوضع الصامت ، مما ينتج عنه رسالة تقدم واحدة فقط كل 5 ثوانٍ. ال
يقوم التسجيل الافتراضي بطباعة رسالة واحدة لكل 100000 صف ، والتي غالبًا ما تُخرج العديد من الأسطر
في الثانية (خاصة على الأجهزة الجيدة).

-s عامل المقياس
- مقياس =عامل المقياس
اضرب عدد الصفوف التي تم إنشاؤها بواسطة عامل المقياس. على سبيل المثال ، إرادة -s 100
قم بإنشاء 10,000,000 صف في جدول pgbench_accounts. الافتراضي هو 1. عندما يكون المقياس
20,000 أو أكبر ، الأعمدة المستخدمة للاحتفاظ بمعرفات الحساب (أعمدة المساعدة) سوف
قم بالتبديل إلى استخدام أعداد صحيحة أكبر (بيجينت) ، لكي تكون كبيرة بما يكفي لاحتواء النطاق
من معرفات الحساب.

--مفاتيح خارجية
إنشاء قيود المفتاح الخارجي بين الجداول القياسية.

--فهرس- tabpace =Index_tablespace
قم بإنشاء فهارس في مساحة الجدول المحددة ، بدلاً من مساحة الجدول الافتراضية.

--tablespace =مساحة الطاولة
أنشئ الجداول في مساحة الجدول المحددة ، بدلاً من مساحة الجدول الافتراضية.

- طاولات غير مسدودة
قم بإنشاء كافة الجداول كجداول غير مسجلة ، بدلاً من جداول دائمة.

المقارنة مزيد من الخيارات
يقبل pgbench وسيطات قياس الأداء لسطر الأوامر التالية:

-c عميل
- العميل =عميل
عدد العملاء الذين تمت محاكيتهم ، أي عدد جلسات قاعدة البيانات المتزامنة. تقصير
هو 1.

-C
--الاتصال
قم بإنشاء اتصال جديد لكل معاملة ، بدلاً من القيام بذلك مرة واحدة فقط في كل معاملة
جلسة العميل. هذا مفيد لقياس الحمل الاتصال.

-d
--Debug
طباعة إخراج التصحيح.

-D فارمين=قيمنا
- تعريف =فارمين=قيمنا
حدد متغيرًا لاستخدامه بواسطة برنامج نصي مخصص (انظر أدناه). عديد -D الخيارات
المسموح به.

-f اسم الملف
- ملف =اسم الملف
قراءة البرنامج النصي للمعاملة من اسم الملف. انظر أدناه للحصول على التفاصيل. -N, -Sو -f .
لا يعتمدوا على بعض.

-j المواضيع
- وظائف =المواضيع
عدد خيوط العامل داخل pgbench. يمكن أن يكون استخدام أكثر من خيط واحد مفيدًا
آلات متعددة وحدات المعالجة المركزية. يجب أن يكون عدد العملاء مضاعفًا لعدد سلاسل الرسائل ،
حيث يتم إعطاء كل سلسلة رسائل نفس عدد جلسات العميل لإدارتها. الافتراضي هو 1.

-l
--سجل
اكتب الوقت الذي تستغرقه كل معاملة في ملف السجل. انظر أدناه للحصول على التفاصيل.

-L قصر
- حد التملك =قصر
الصفقة التي تستمر أكثر من قصر يتم عد المللي ثانية والإبلاغ عنها
بشكل منفصل ، في وقت متأخر.

عند استخدام الخنق (- معدل = ...) ، المعاملات التي تتأخر عن الجدول الزمني بأكثر من ذلك
من قصر مللي ، وبالتالي ليس لديهم أمل في تلبية حد الكمون ، لا يتم إرسالها إلى
الخادم على الإطلاق. يتم عدها والإبلاغ عنها بشكل منفصل كما تم تخطيها.

-M وضع الاستعلام
- البروتوكول =وضع الاستعلام
بروتوكول لاستخدامه في إرسال الاستعلامات إلى الخادم:

بسيط: استخدام بروتوكول الاستعلام البسيط.

موسعة: استخدام بروتوكول الاستعلام الموسع.

معدة: استخدم بروتوكول الاستعلام الموسع مع البيانات المعدة.

الافتراضي هو بروتوكول الاستعلام البسيط. (انظر الفصل 50 ، Frontend / Backend Protocol ، باللغة
الوثائق لمزيد من المعلومات.)

-n
--لا فراغ
لا تقم بإجراء التنظيف بالمكنسة الكهربائية قبل إجراء الاختبار. هذا الخيار هو ضروري إذا كنت كذلك
تشغيل سيناريو اختبار مخصص لا يتضمن الجداول القياسية
pgbench_accounts و pgbench_branches و pgbench_history و pgbench_tellers.

-N
- تخطي بعض التحديثات
لا تقم بتحديث pgbench_tellers و pgbench_branches. سيؤدي هذا إلى تجنب الخلاف التحديث
في هذه الجداول ، لكنها تجعل حالة الاختبار أقل شبهاً بـ TPC-B.

-P ثوانى
- التقدم =ثوانى
إظهار تقرير التقدم كل ثانية ثانية. يتضمن التقرير الوقت منذ
بداية التشغيل ، و tps منذ التقرير الأخير ، وزمن انتقال المعاملة
المتوسط ​​والانحراف المعياري منذ التقرير الأخير. تحت الاختناق (-R)، و
يتم حساب وقت الاستجابة فيما يتعلق بوقت البدء المجدول للمعاملة ، وليس
وقت بدء المعاملة الفعلي ، وبالتالي فهو يشمل أيضًا متوسط ​​تأخر الجدول الزمني
مرة.

-r
--تقارير-الكمون
قم بالإبلاغ عن متوسط ​​زمن الوصول لكل عبارة (وقت التنفيذ من منظور ملف
client) لكل أمر بعد انتهاء الاختبار. انظر أدناه للحصول على التفاصيل.

-R معدل
- معدل =معدل
قم بتنفيذ المعاملات التي تستهدف السعر المحدد بدلاً من التشغيل بالسرعة نفسها
ممكن (الافتراضي). يتم إعطاء المعدل في المعاملات في الثانية. إذا كان المستهدف
المعدل أعلى من الحد الأقصى الممكن ، لن يؤثر حد المعدل على النتائج.

يتم استهداف السعر عن طريق بدء المعاملات على طول الجدول الزمني الموزع بواسون
الجدول الزمني. يتحرك جدول وقت البدء المتوقع إلى الأمام بناءً على وقت العميل
بدأت لأول مرة ، وليس عند انتهاء الصفقة السابقة. هذا النهج يعني أنه متى
تجاوزت المعاملات وقت الانتهاء الأصلي المجدول ، فمن الممكن أن تكون المعاملات في وقت لاحق
للحاق بالركب مرة أخرى.

عندما يكون الاختناق نشطًا ، يكون زمن انتقال المعاملة المبلغ عنه في نهاية التشغيل هو
محسوبة من أوقات البدء المجدولة ، بحيث تتضمن وقت كل معاملة
اضطررت إلى الانتظار حتى تنتهي المعاملة السابقة. وقت الانتظار يسمى
يتم أيضًا الإبلاغ عن وقت تأخر الجدول الزمني ، ومتوسطه والحد الأقصى له بشكل منفصل. ال
زمن انتقال المعاملة فيما يتعلق بوقت بدء المعاملة الفعلي ، أي الوقت
التي تم إنفاقها في تنفيذ المعاملة في قاعدة البيانات ، يمكن حسابها عن طريق طرح
جدولة وقت التأخر من وقت الاستجابة المبلغ عنه.

If - حد التمكين يستخدم مع --معدل، يمكن أن تتخلف الصفقة كثيرًا
أنه تجاوز بالفعل حد الكمون عند انتهاء المعاملة السابقة ، لأن
يتم حساب زمن الوصول من وقت البدء المجدول. هذه المعاملات ليست كذلك
يتم إرسالها إلى الخادم ، ولكن يتم تخطيها تمامًا ويتم عدها بشكل منفصل.

يعد تأخير الجدول الزمني المرتفع مؤشرًا على أن النظام لا يمكنه معالجة المعاملات
بالسعر المحدد ، بالعدد المختار من العملاء والمواضيع. عندما يكون المتوسط
وقت تنفيذ المعاملة أطول من الفاصل الزمني المجدول بين كل منهما
الصفقة ، كل معاملة متتالية سوف تتخلف أكثر ، والجدول الزمني
سيستمر وقت التأخير في الزيادة كلما طالت مدة التشغيل التجريبي. عندما يحدث ذلك ، سوف تفعل
يجب أن تقلل من معدل المعاملات المحدد.

-s عامل المقياس
- مقياس =عامل المقياس
تقرير عامل المقياس المحدد في إخراج pgbench. مع الاختبارات المضمنة ، هذا
ليس ضروري؛ سيتم الكشف عن عامل المقياس الصحيح عن طريق حساب عدد
الصفوف في جدول pgbench_branches. ومع ذلك ، عند اختبار المعايير المخصصة (-f
الخيار) ، سيتم الإبلاغ عن عامل القياس على أنه 1 ما لم يتم استخدام هذا الخيار.

-S
- اختر فقط
قم بإجراء معاملات محددة فقط بدلاً من اختبار TPC-B-like.

-t مُعاملات شراء مُتعددة
- المعاملات =مُعاملات شراء مُتعددة
عدد المعاملات التي يديرها كل عميل. الافتراضي هو 10.

-T ثواني
- الوقت =ثواني
قم بإجراء الاختبار لهذه الثواني العديدة ، بدلاً من عدد ثابت من المعاملات لكل
العملاء. -t و -T هي حصرية متبادلة

-v
- الفراغ الكل
قم بتنظيف جميع الطاولات القياسية الأربعة بالمكنسة الكهربائية قبل إجراء الاختبار. مع أي منهما -n ولا -v,
سيقوم pgbench بالمكنسة الكهربائية للجداول pgbench_tellers و pgbench_branches ، وسيتم اقتطاعها
pgbench_history.

- الفاصل التجميعي =ثواني
طول فترة التجميع (بالثواني). يمكن استخدامه فقط مع -l - with
هذا الخيار ، يحتوي السجل على ملخص لكل فترة زمنية (عدد المعاملات ، min / max
زمن الوصول وحقلان إضافيان مفيدان لتقدير التباين).

هذا الخيار غير مدعوم حاليًا على Windows.

- معدل أخذ العينات =معدل
معدل أخذ العينات ، المستخدم عند كتابة البيانات في السجل ، لتقليل كمية السجل
ولدت. إذا تم توفير هذا الخيار ، فسيتم فقط الجزء المحدد من المعاملات
تسجيل. 1.0 يعني أنه سيتم تسجيل جميع المعاملات ، 0.05 يعني 5٪ فقط من
سيتم تسجيل المعاملات.

تذكر أن تأخذ معدل أخذ العينات في الاعتبار عند معالجة ملف السجل. ل
على سبيل المثال ، عند حساب قيم tps ، تحتاج إلى مضاعفة الأرقام وفقًا لذلك (على سبيل المثال
مع معدل عينة 0.01 ، ستحصل فقط على 1/100 من tps الفعلي).

مشترك مزيد من الخيارات
يقبل pgbench الحجج الشائعة التالية لسطر الأوامر:

-h اسم المضيف
- المضيف =اسم المضيف
اسم مضيف خادم قاعدة البيانات

-p ميناء
- المنفذ =ميناء
رقم منفذ خادم قاعدة البيانات

-U تسجيل الدخول
--اسم المستخدم =تسجيل الدخول
اسم المستخدم المراد الاتصال به

-V
--الإصدار
اطبع نسخة pgbench واخرج.

-?
--مساعدة
إظهار التعليمات حول وسيطات سطر الأوامر pgbench ، والخروج.

الملاحظات


ابحث عن is ال "عملية تجارية" فعلا تنفيذ in pgbench؟
يصدر البرنامج النصي للمعاملة الافتراضية سبعة أوامر لكل معاملة:

1. ابدأ ؛

2. قم بتحديث مجموعة pgbench_accounts abalance = abalance +: delta حيث المساعدات =: المساعدات ؛

3. حدد abalance من pgbench_accounts حيث المساعدات =: المساعدات ؛

4. تحديث pgbench_tellers SET tbalance = tbalance +: delta Where tid =: tid؛

5. تحديث pgbench_branches تعيين bbalance = bbalance +: دلتا حيث العطاء =: العطاء ؛

6. أدخل إلى pgbench_history (tid، bid، help، delta، mtime) VALUES (: tid،: bid،: aid،
: دلتا ، CURRENT_TIMESTAMP) ؛

7. النهاية ؛

إذا قمت بتحديد -N، الخطوتين 4 و 5 غير مدرجتين في المعاملة. إذا حددت -S,
فقط اختر صدر.

Custom مخطوطات
يدعم pgbench تشغيل سيناريوهات معيارية مخصصة عن طريق استبدال الافتراضي
البرنامج النصي للمعاملة (الموصوف أعلاه) مع قراءة البرنامج النصي للمعاملة من ملف (-f
خيار). في هذه الحالة ، تعتبر "المعاملة" بمثابة تنفيذ واحد لملف نصي. أنت تستطيع
حتى تحديد نصوص متعددة (متعددة -f options) ، وفي هذه الحالة يكون أحد عشوائي من
يتم اختيار البرامج النصية في كل مرة تبدأ فيها جلسة العميل معاملة جديدة.

تنسيق ملف البرنامج النصي هو أمر SQL واحد لكل سطر ؛ أوامر SQL متعددة الأسطر ليست كذلك
أيد. يتم تجاهل الأسطر والخطوط الفارغة التي تبدأ بـ -. يمكن لأسطر ملف البرنامج النصي أيضًا
تكون "أوامر meta" ، والتي يتم تفسيرها بواسطة pgbench نفسه ، كما هو موضح أدناه.

هناك وسيلة بسيطة لاستبدال المتغيرات لملفات البرامج النصية. يمكن تعيين المتغيرات بواسطة
سطر الأوامر -D الخيار الموضح أعلاه ، أو بواسطة أوامر التعريف الموضحة أدناه. في
بالإضافة إلى أي متغيرات محددة مسبقًا -D خيارات سطر الأوامر ، هناك بعض المتغيرات
التي يتم ضبطها مسبقًا تلقائيًا ، المدرجة في الجدول 221 ، "المتغيرات التلقائية". قيمة
المحددة لهذه المتغيرات باستخدام -D الأسبقية على الإعدادات المسبقة التلقائية. مرة واحدة
set ، يمكن إدراج قيمة المتغير في أمر SQL عن طريق كتابة:اسم المتغير. عندما
تشغيل أكثر من جلسة عميل ، كل جلسة لها مجموعة من المتغيرات الخاصة بها.

طاولات ومكاتب 221 أوتوماتيك المتغيرات
┌────────────────────────────────── ───┐
متغيرالوصف
├──────────┼─────────────────────── ───┤
│ مقياس │ عامل المقياس الحالي │
├──────────┼─────────────────────── ───┤
│ معرف العميل │ رقم فريد يحدد │
│ جلسة العميل (تبدأ من │
│ │ صفر) │
└──────────┴─────────────────────── ───┘

تبدأ الأوامر الوصفية لملف البرنامج النصي بشرطة مائلة للخلف (\). الحجج إلى أمر التعريف هي
مفصولة بمسافة بيضاء. أوامر التعريف هذه مدعومة:

\يضع فارمين التعبير
مجموعات متغيرة فارمين إلى قيمة عددية محسوبة من التعبير. التعبير
قد تحتوي على ثوابت عدد صحيح مثل 5432 ، مراجع للمتغيرات:اسم المتغيرو
التعبيرات المكونة من عوامل تشغيل أحادية (-) أو ثنائية (+ ، - ، * ، / ،٪) مع المعتاد
الترابط والأقواس.

أمثلة:

\ مجموعة البائعين 10 *: مقياس
\ مجموعة المساعدة (1021 *: مساعدات)٪ (100000 *: مقياس) + 1

\ مجموعة فارمين دقيقة ماكس [زي موحد | {غاوسي | متسارع } المعلمة ]
مجموعات متغيرة فارمين إلى قيمة عدد صحيح عشوائي بين الحدين دقيقة و ماكس
شامل. يمكن أن يكون كل حد إما عددًا صحيحًا ثابتًا أو:اسم المتغير مرجع
إلى متغير له قيمة عددية.

بشكل افتراضي ، أو عندما يتم تحديد منتظم ، يتم رسم جميع القيم في النطاق بالتساوي
احتمالا. يؤدي تحديد خيارات gaussian أو الأسية إلى تعديل هذا السلوك ؛ كل
يتطلب معلمة إلزامية تحدد الشكل الدقيق للتوزيع.

لتوزيع Gaussian ، يتم تعيين الفاصل الزمني على عادي قياسي
تم اقتطاع التوزيع (منحنى غاوسي الكلاسيكي على شكل جرس) عند - المعلمة على
اليسار و + المعلمة على اليمين. تزداد احتمالية وجود القيم في منتصف الفترة الزمنية
ليتم رسمها. على وجه الدقة ، إذا كانت PHI (x) هي دالة التوزيع التراكمي لـ
التوزيع الطبيعي القياسي ، بمتوسط ​​mu محدد على أنه (max + min) / 2.0 ، مع

f (x) = PHI (2.0 * معلمة * (x - mu) / (حد أقصى - دقيقة + 1)) /
(2.0 * PHI (معلمة) - 1.0)

ثم القيمة i ما بين دقيقة و ماكس شامل مع الاحتمال: f (i + 0.5) - f (i
- 0.5). حدسيًا ، الأكبر المعلمة، كلما زادت القيم القريبة من
يتم رسم منتصف الفاصل الزمني ، والقيم الأقل تكرارًا قريبة من دقيقة و
ماكس الحدود. حوالي 67٪ من القيم مأخوذة من الوسيط 1.0 / المعلمة ، وهذا هو
0.5 / المعلمة النسبية حول المتوسط ​​، و 95٪ في الوسط 2.0 / المعلمة ، ذلك
هو 1.0 / معلمة نسبي حول المتوسط ​​؛ على سبيل المثال ، إذا المعلمة هو 4.0 ، 67٪
القيم مأخوذة من الربع الأوسط (1.0 / 4.0) للفترة (أي من 3.0
/ 8.0 إلى 5.0 / 8.0) و 95٪ من النصف الأوسط (2.0 / 4.0) من الفترة (الثانية
والربيع الثالث). الحد الأدنى المعلمة هو 2.0 لأداء Box-Muller
تحول.

للتوزيع الأسي ، المعلمة يتحكم في التوزيع عن طريق اقتطاع أ
بسرعة تناقص التوزيع الأسي في المعلمة، ثم الإسقاط على
أعداد صحيحة بين الحدود. على وجه الدقة ، مع

f (x) = exp (-parameter * (x - min) / (max - min + 1)) / (1.0 - exp (-parameter))

ثم القيمة i ما بين دقيقة و ماكس ضمنيًا مع الاحتمال: f (x) - f (x + 1).
حدسيًا ، الأكبر المعلمة، كلما كانت القيم قريبة من دقيقة .
الوصول إليها ، والقيم الأقل تواترًا قريبة من ماكس يتم الوصول إليها. أقرب إلى 0
المعلمة، يكون توزيع الوصول أكثر تملقًا (أكثر اتساقًا). تقريب خام
من التوزيع هو أن قيم 1٪ الأكثر شيوعًا في النطاق ، قريبة من دقيقة,
يتم رسمها المعلمة٪ من الوقت. المعلمة يجب أن تكون القيمة موجبة تمامًا.

على سبيل المثال:

\ setrandom help 1: حسابات gaussian 5.0

\ينام عدد [لنا | مللي | س ]
يتسبب في سكون تنفيذ البرنامج النصي للمدة المحددة بالميكروثانية (الولايات المتحدة) ،
مللي ثانية (مللي ثانية) أو ثانية (ثوان). إذا تم حذف الوحدة ، فستكون الثواني هي الإعداد الافتراضي.
عدد يمكن أن يكون إما عددًا صحيحًا ثابتًا أو:اسم المتغير إشارة إلى متغير
لها قيمة عددية.

على سبيل المثال:

\ النوم 10 مللي ثانية

\ سيتشيل فارمين أمر [ حجة ...]
مجموعات متغيرة فارمين لنتيجة أمر shell أمر. يجب على الأمر
إرجاع قيمة عدد صحيح من خلال الإخراج القياسي.

حجة يمكن أن يكون إما ثابت نص أو:اسم المتغير إشارة إلى متغير
أي أنواع. إذا كنت تريد استخدام حجة بدءًا من النقطتين ، فأنت بحاجة إلى إضافة
القولون الإضافي في بداية حجة.

على سبيل المثال:

\ sethell variable_to_be_assigned الأمر literal_argument: متغير :: literal_starting_with_colon

\صدفة أمر [ حجة ...]
مثل \ sethell ، لكن يتم تجاهل النتيجة.

على سبيل المثال:

\ shell الأمر literal_argument: متغير :: literal_starting_with_colon

على سبيل المثال ، التعريف الكامل للمعاملة المضمنة على غرار TPC-B هو:

\ مجموعة n الفروع: مقياس
\ مجموعة البائعين 10 *: مقياس
\ مجموعة n حسابات 100000 *: مقياس
\ مجموعة المساعدة العشوائية 1: الحسابات
\ تعيين العطاءات العشوائية 1: عدد الفروع
\ setrandom tid 1: ntellers
\ setrandom delta -5000 5000
يبدأ؛
UPDATE pgbench_accounts SET abalance = abalance +: دلتا حيث المساعدة =: المساعدات ؛
حدد abalance من pgbench_accounts حيث المساعدات =: المساعدات ؛
تحديث pgbench_tellers SET tbalance = tbalance +: delta Where tid =: tid؛
UPDATE pgbench_branches SET bbalance = bbalance +: delta حيث العطاء =: العطاء ؛
INSERT INTO pgbench_history (tid، bid، help، delta، mtime) VALUES (: tid،: bid،: aid،: delta، CURRENT_TIMESTAMP) ؛
النهاية؛

يسمح هذا البرنامج النصي لكل تكرار للمعاملة بالإشارة إلى مختلف ،
صفوف مختارة عشوائيا. (يوضح هذا المثال أيضًا سبب أهميته لكل جلسة عميل
أن يكون لها متغيراتها الخاصة - وإلا فلن تمس مختلفًا بشكل مستقل
صفوف.)

لكل معاملة تسجيل
مع -l الخيار ولكن بدون - الفاصل التجميعي، يكتب pgbench الوقت الذي يستغرقه
كل معاملة إلى ملف السجل. سيتم تسمية ملف السجل باسم pgbench_log.NNN، حيث NNN is
PID لعملية pgbench. إذا كان -j الخيار 2 أو أعلى ، مما يؤدي إلى إنشاء عامل متعدد
المواضيع ، سيكون لكل منها ملف السجل الخاص به. سيستخدم العامل الأول نفس الاسم لملفه
ملف السجل كما في حالة العامل الفردية القياسية. ملفات السجل الإضافية للآخر
سيتم تسمية العمال pgbench_log.NNN.MMM، حيث MMM هو رقم تسلسلي لكل منها
عامل يبدأ بـ 1.

تنسيق السجل هو:

CLIENT_ID رقم العملية التجارية الوقت رقم الملف time_epoch الوقت_ لنا [Schedule_lag]

أين الوقت هو إجمالي الوقت المنقضي للمعاملة بالميكروثانية ، رقم الملف يحدد أي
تم استخدام ملف البرنامج النصي (مفيد عندما تم تحديد نصوص متعددة باستخدام -f)، و
time_epoch/الوقت_ لنا عبارة عن طابع زمني بتنسيق عصر يونكس وإزاحة بالميكروثانية
(مناسب لإنشاء طابع زمني ISO 8601 مع ثوانٍ كسرية) يظهر متى
اكتملت المعاملة. مجال Schedule_lag هو الفرق بين المعاملات
وقت البدء المجدول والوقت الذي بدأ فيه فعليًا بالميكروثانية. إنه فقط
الحاضر عندما --معدل يستخدم الخيار. الحقل الأخير تخطي المعاملات تقارير
عدد المعاملات التي تم تخطيها لأنها كانت متأخرة جدًا عن الجدول الزمني. إنه فقط
الحاضر عند كلا الخيارين --معدل و - حد التمكين يستخدم.

فيما يلي مقتطف من ملف السجل الذي تم إنشاؤه:

0 199 2241 0 1175850568 995598
0 200 2465 0 1175850568 998079
0 201 2513 0 1175850569 608
0 202 2038 0 1175850569 2663

مثال آخر مع --rate = 100 و --latency-limit = 5 (لاحظ القيمة الإضافية Schedule_lag
عمود):

0 81 4621 0 1412881037 912698 3005
0 82 6173 0 1412881037 914578 4304
تم تخطي 0 83 0 1412881037 914578 5217
تم تخطي 0 83 0 1412881037 914578 5099
0 83 4722 0 1412881037 916203 3108
0 84 4142 0 1412881037 918023 2333
0 85 2465 0 1412881037 919759 740

في هذا المثال ، تأخرت المعاملة 82 ، لأن زمن الوصول (6.173 مللي ثانية) كان أكثر من 5
حد مللي ثانية. تم تخطي المعاملتين التاليتين ، لأنهما تأخرتا بالفعل من قبل
لقد بدأوا حتى.

عند إجراء اختبار طويل على الأجهزة التي يمكنها التعامل مع الكثير من المعاملات ، فإن ملفات السجل
يمكن أن تصبح كبيرة جدًا. ال --معدل أخذ العينات يمكن استخدام الخيار لتسجيل عينة عشوائية فقط
المعاملات.

مجمعة تسجيل
مع - الفاصل التجميعي الخيار ، تستخدم السجلات تنسيقًا مختلفًا بعض الشيء:

الفاصل الزمني عدد_المعامالت الكمون_مجموع الكمون_2_sum min_latency أقصى حد [lag_sum lag_2_sum min_lag max_lag [تخطي المعاملات]]

أين الفاصل الزمني هي بداية الفاصل الزمني (الطابع الزمني لتنسيق عصر يونكس) ،
عدد_المعامالت هو عدد المعاملات في الفترة الزمنية ، الكمون_مجموع هو
مجموع فترات الاستجابة (بحيث يمكنك حساب متوسط ​​زمن الوصول بسهولة). المجالان التاليان هما
مفيد لتقدير التباين - الكمون_مجموع هو مجموع فترات الاختفاء و الكمون_2_sum هو
مجموع القوى الثانية من الكمون. آخر حقلين هما min_latency - حد أدنى من الكمون
ضمن الفاصل الزمني ، و أقصى حد - أقصى زمن انتقال خلال الفاصل الزمني. عملية تحويل
يتم احتسابه في الفاصل الزمني عند ارتكابه. الحقول في النهاية ، lag_sum,
lag_2_sum, min_lagو max_lag، تكون موجودة فقط إذا كان --معدل يستخدم الخيار. وللغاية
الاخير، تخطي المعاملات، موجود فقط إذا كان الخيار - حد التمكين حاضر،
أيضاً. يتم حسابها من وقت انتظار كل معاملة للمعاملة السابقة
للإنهاء ، أي الفرق بين وقت البدء المجدول لكل معاملة و
الوقت الذي بدأت فيه بالفعل.

فيما يلي أمثلة على المخرجات:

1345828501 5601 1542744 483552416 61 2573
1345828503 7884 1979812 565806736 60 1479
1345828505 7208 1979422 567277552 59 1391
1345828507 7685 1980268 569784714 60 1398
1345828509 7073 1979779 573489941 236 1411

لاحظ أنه بينما يحتوي ملف السجل العادي (غير المجمع) على فهرس للبرنامج النصي المخصص
الملفات ، والسجل المجمع لا. لذلك إذا كنت بحاجة إلى بيانات لكل برنامج نصي ، فأنت بحاجة إلى ذلك
قم بتجميع البيانات بنفسك.

لكل بيان الإختفاء
مع -r option ، يجمع pgbench وقت المعاملة المنقضي لكل كشف حساب
ينفذه كل عميل. ثم يُبلغ عن متوسط ​​هذه القيم ، ويشار إليها باسم
وقت الاستجابة لكل عبارة بعد انتهاء المعيار.

بالنسبة للبرنامج النصي الافتراضي ، سيبدو الإخراج مشابهًا لما يلي:

بدء الفراغ ... نهاية.
نوع المعاملة: TPC-B (نوع من)
عامل التحجيم: 1
وضع الاستعلام: بسيط
عدد العملاء: 10
عدد الخيوط: 1
عدد المعاملات لكل عميل: 1000
عدد المعاملات التي تمت معالجتها بالفعل: 10000/10000
tps = 618.764555 (بما في ذلك إنشاء الاتصالات)
tps = 622.977698 (باستثناء إنشاء التوصيلات)
اختفاء البيان بالميلي ثانية:
0.004386 \ مجموعة n الفروع 1 *: مقياس
0.001343 \ مجموعة المعلقين 10 *: مقياس
0.001212 \ set naccounts 100000 *: مقياس
0.001310 \ مجموعة المساعدة العشوائية 1: الحسابات
0.001073 \ تعيين العطاء العشوائي 1: n الفروع
0.001005 \ setrandom tid 1: ntellers
0.001078 \ setrandom delta -5000 5000
0.326152 يبدأ ؛
0.603376 UPDATE pgbench_accounts SET abalance = abalance +: دلتا حيث المساعدات =: المساعدات ؛
0.454643 حدد abalance من pgbench_accounts حيث المساعدة =: المساعدات ؛
5.528491 UPDATE pgbench_tellers SET tbalance = tbalance +: delta Where tid =: tid؛
7.335435 UPDATE pgbench_branches SET bbalance = bbalance +: delta حيث العطاء =: العطاء ؛
0.371851 INSERT INTO pgbench_history (tid، bid، help، delta، mtime) VALUES (: tid،: bid،: aid،: delta، CURRENT_TIMESTAMP) ؛
1.212976 النهاية ؛

إذا تم تحديد ملفات نصية متعددة ، فسيتم الإبلاغ عن المعدلات بشكل منفصل لكل منها
ملف البرنامج النصي.

لاحظ أن جمع معلومات التوقيت الإضافية اللازمة لوقت الاستجابة لكل عبارة
يضيف الحساب بعض النفقات العامة. سيؤدي ذلك إلى إبطاء متوسط ​​سرعة التنفيذ وتقليل
TPS المحسوبة. يختلف مقدار التباطؤ بشكل كبير اعتمادًا على النظام الأساسي و
المعدات. تعد مقارنة متوسط ​​قيم TPS مع تمكين إعداد تقارير زمن الوصول وبدون تمكينه أ
طريقة جيدة لقياس ما إذا كان الوقت الزائد مهمًا.

الخير الممارسات
من السهل جدًا استخدام pgbench لإنتاج أرقام لا معنى لها تمامًا. هنا بعض
إرشادات لمساعدتك في الحصول على نتائج مفيدة.

في المقام الأول، أبدا صدق أي اختبار يتم تشغيله لبضع ثوانٍ فقط. استخدم ال -t or
-T خيار جعل التشغيل يستمر لبضع دقائق على الأقل ، وذلك لتقليل الضوضاء. في بعض
حالات قد تحتاج إلى ساعات للحصول على أرقام قابلة للتكرار. إنها فكرة جيدة أن تجربها
يتم إجراء الاختبار عدة مرات ، لمعرفة ما إذا كانت أرقامك قابلة للتكرار أم لا.

بالنسبة لسيناريو الاختبار الافتراضي الشبيه بـ TPC-B ، عامل مقياس التهيئة (-s) يجب ان يكون
على الأقل بحجم أكبر عدد من العملاء الذين تنوي اختبارهم (-c) ؛ وإلا ستفعل
يتم في الغالب قياس خلاف التحديث. لا يوجد سوى -s صفوف في pgbench_branches
الجدول ، وكل معاملة تريد تحديث واحد منهم ، لذلك -c القيم التي تزيد عن -s
سيؤدي بلا شك إلى حظر الكثير من المعاملات في انتظار المعاملات الأخرى.

سيناريو الاختبار الافتراضي أيضًا حساس جدًا للمدة التي مرت منذ الجداول
تمت تهيئة: تراكم الصفوف الميتة والمساحة الميتة في الجداول يغير
نتائج. لفهم النتائج ، يجب عليك تتبع العدد الإجمالي للتحديثات و
عندما يحدث الكنس. إذا تم تمكين الفراغ التلقائي ، فقد يؤدي ذلك إلى تغييرات غير متوقعة في
قياس الأداء.

أحد قيود pgbench هو أنه يمكن أن يصبح هو نفسه عنق الزجاجة عند محاولة اختبار a
عدد كبير من جلسات العملاء. يمكن التخفيف من ذلك عن طريق تشغيل pgbench على ملف مختلف
الجهاز من خادم قاعدة البيانات ، على الرغم من أن زمن الوصول المنخفض للشبكة سيكون ضروريًا. قد يكون
حتى يكون مفيدًا لتشغيل العديد من مثيلات pgbench بشكل متزامن ، على العديد من أجهزة العميل ،
مقابل نفس خادم قاعدة البيانات.

استخدم pgbench عبر الإنترنت باستخدام خدمات onworks.net



أحدث برامج Linux و Windows عبر الإنترنت