هذا هو الأمر pt-table-usagep الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
استخدام جدول pt - تحليل كيفية استخدام الاستعلامات للجداول.
موجز
الاستخدام: pt-table-Usage [OPTIONS] [FILES]
يقرأ pt-table-Usage الاستعلامات من السجل ويحلل كيفية استخدام الجداول. إذا لم يكن الملف هو
المحدد ، يقرأ STDIN. يقوم بطباعة تقرير لكل استعلام.
المخاطر
مجموعة أدوات Percona ناضجة ، ومثبتة في العالم الحقيقي ، ومختبرة جيدًا ، ولكن جميعها قاعدة بيانات
يمكن أن تشكل الأدوات خطرًا على النظام وخادم قاعدة البيانات. قبل استخدام هذه الأداة ،
من فضلك:
· اقرأ وثائق الأداة
· مراجعة الأداة المعروفة "BUGS"
· اختبار الأداة على خادم غير إنتاجي
· قم بعمل نسخة احتياطية لخادم الإنتاج الخاص بك وتحقق من النسخ الاحتياطية
الوصف
يقرأ pt-table-Usage الاستعلامات من السجل ويحلل كيفية استخدام الجداول. يجب أن يكون السجل
أن تكون بتنسيق سجل الاستعلام البطيء في MySQL.
يعد استخدام الجدول أكثر من مجرد إشارة إلى الجداول التي يقرأها الاستعلام أو يكتبها.
يشير أيضًا إلى تدفق البيانات: البيانات الواردة والبيانات الصادرة. تحدد الأداة تدفق البيانات حسب
السياقات التي تظهر فيها الجداول. يمكن لاستعلام واحد استخدام جدول في عدة مختلفة
السياقات في وقت واحد. تسرد مخرجات الأداة كل سياق لكل جدول. هذا
تشير قائمة CONTEXT-TABLE إلى كيفية تدفق البيانات بين الجداول. يسرد قسم "الإخراج"
السياقات المحتملة ويصف كيفية قراءة تقرير استخدام الجدول.
تحلل الأداة تدفق البيانات نزولاً إلى مستوى الأعمدة الفردية ، لذلك من المفيد إذا
يتم تحديد الأعمدة بشكل لا لبس فيه في الاستعلام. إذا كان الاستعلام يستخدم جدولًا واحدًا فقط ، فحينئذٍ
يجب أن تكون جميع الأعمدة من هذا الجدول ، ولا توجد صعوبة. ولكن إذا كان الاستعلام يستخدم
جداول متعددة وأسماء الأعمدة ليست مؤهلة للجدول ، فمن الضروري استخدامها
"EXPLAIN EXTENDED" ، متبوعًا بـ "SHOW WARNINGS" لتحديد جداول الأعمدة
ينتمي ل.
إذا كانت الأداة لا تعرف قاعدة البيانات الافتراضية للاستعلام ، والتي يمكن أن تحدث عندما تكون قاعدة البيانات
لم تتم طباعة في السجل ، ثم يمكن أن تفشل "EXPLAIN EXTENDED". في هذه الحالة ، يمكنك تحديد
قاعدة بيانات افتراضية مع "- قاعدة بيانات". يمكنك أيضًا استخدام "تعريفات - إنشاء الجدول"
خيار للمساعدة في حل الغموض.
OUTPUT
تقوم الأداة بطباعة تقرير استخدام لكل جدول في كل استعلام ، على غرار ما يلي:
Query_id: 0x1CD27577D202A339.1
تحديث t1
حدد DUAL
انضم إلى t1
انضم إلى t2
أين t1
Query_id: 0x1CD27577D202A339.2
تحديث t2
حدد DUAL
انضم إلى t1
انضم إلى t2
أين t1
يحتوي السطر الأول على معرف الاستعلام ، والذي يكون افتراضيًا هو نفسه المعروض في pt-
تقارير ملخص الاستعلام. إنه مجموع اختباري MD5 لـ "بصمة" الاستعلام ، وهو ما
يبقى بعد إزالة العناصر الحرفية ، وانهيار المساحات البيضاء ، ومجموعة متنوعة من الأشياء الأخرى
التحولات. يتكون معرف الاستعلام من جزأين مفصولين بنقطة: معرف الاستعلام و
رقم الطاولة. إذا كنت ترغب في استخدام قيمة مختلفة لتعريف الاستعلام ، يمكنك تحديد
الخيار "--id-attribute".
يعرض المثال السابق فقرتين لاستعلام واحد ، وليس استعلامين. لاحظ أن
معرف الاستعلام مطابق للاثنين ، لكن رقم الجدول يختلف. رقم الجدول
بمقدار 1 لكل جدول يقوم الاستعلام بتحديثه. استعلامات UPDATE متعددة الجداول فقط
يمكن تحديث جداول متعددة باستعلام واحد ، وبالتالي فإن رقم الجدول هو 1 لجميع الجداول الأخرى
أنواع الاستعلامات. (لا تدعم الأداة استعلامات DELETE متعددة الجداول.) المثال
الإخراج أعلاه من هذا الاستعلام:
تحديث t1 كـ JOIN t2 AS b USING (id)
تعيين a.foo = "bar" ، b.foo = "bat"
حيث a.id = 1 ؛
تشير عبارة "SET" إلى أن الاستعلام يقوم بتحديث جدولين: "a" ذو الاسم المستعار "t1" و "b"
مستعار كـ "t2".
بعد السطر الأول ، تطبع الأداة عددًا متغيرًا من خطوط CONTEXT-TABLE. ممكن
السياقات هي كما يلي:
· يختار
SELECT يعني أن الاستعلام يسترد البيانات من الجدول لسبب من سببين. ال
الأول هو إعادته إلى المستخدم كجزء من مجموعة النتائج. استعلامات التحديد فقط
إرجاع مجموعات النتائج ، لذلك يعرض التقرير دائمًا سياق SELECT لاستعلامات SELECT.
الحالة الثانية هي عندما تتدفق البيانات إلى جدول آخر كجزء من INSERT أو UPDATE.
على سبيل المثال ، استعلام UPDATE في المثال أعلاه له الاستخدام:
حدد DUAL
يشير هذا إلى:
تعيين a.foo = "bar" ، b.foo = "bat"
تستخدم الأداة DUAL لأية قيم لا تنشأ في جدول ، في هذه الحالة ملف
القيم الحرفية "شريط" و "بات". إذا كانت عبارة "SET" هذه هي "SET a.foo = b.foo" بدلاً من ذلك ،
ثم يكون الاستخدام الكامل:
Query_id: 0x1CD27577D202A339.1
تحديث t1
حدد t2
انضم إلى t1
انضم إلى t2
أين t1
وجود سياق SELECT بعد سياق آخر ، مثل UPDATE أو INSERT ،
يشير إلى المكان الذي تسترد فيه UPDATE أو INSERT بياناتها. المثال على الفور
أعلاه يعكس استعلام UPDATE الذي يقوم بتحديث الصفوف في الجدول "t1" ببيانات من الجدول
"t2".
· أي فعل آخر
قد يكون أي فعل آخر ، مثل INSERT و UPDATE و DELETE وما إلى ذلك ، سياقًا. هذه الأفعال
تشير إلى أن الاستعلام يعدل البيانات بطريقة ما. إذا كان سياق SELECT يتبع أحد
هذه الأفعال ، ثم يقرأ الاستعلام البيانات من جدول SELECT ويكتبها على هذا
طاولة. يحدث هذا ، على سبيل المثال ، مع INSERT..SELECT أو UPDATE الاستعلامات التي تستخدم
القيم من الجداول بدلاً من القيم الثابتة.
أنواع الاستعلام هذه غير مدعومة: SET ، LOAD ، وحذف متعدد الجداول.
· ينضم
يسرد سياق JOIN الجداول المنضمة ، إما باستخدام JOIN صريح في ملف
من عبارة FROM ، أو ضمنيًا في عبارة WHERE ، مثل "t1.id = t2.id".
· أين
يسرد سياق WHERE الجداول المستخدمة في جملة WHERE لتصفية النتائج.
لا يتضمن هذا الجداول المنضمة ضمنيًا في جملة WHERE؛ هؤلاء يكونون
مدرجة على أنها سياقات JOIN. على سبيل المثال:
حيث t1.id> 100 و t1.id <200 و t2.foo ليست فارغة
نتائج البحث في
أين t1
أين t2
الأداة تسرد الجداول المميزة فقط ؛ هذا هو سبب إدراج الجدول "t1" مرة واحدة فقط.
TLIST
يسرد سياق TLIST الجداول التي يصل إليها الاستعلام ، ولكنها لا تظهر في أي منها
سياق آخر. عادة ما تكون هذه الجداول صلة ديكارتية ضمنية. على سبيل المثال ، ملف
ينتج عن طلب البحث "SELECT * FROM t1، t2":
معرّف الاستعلام: 0xBDDEB6EDA41897A8.1
حدد t1
حدد t2
TLIST t1
TLIST t2
بادئ ذي بدء ، هناك سياقين SELECT ، لأن "SELECT *" يختار الصفوف من الكل
الجداول؛ "t1" و "t2" في هذه الحالة. ثانيًا ، يتم ضم الجداول ضمنيًا ، ولكن
بدون أي نوع من شروط الانضمام ، مما ينتج عنه صلة ديكارتية كما هو مشار إليه بواسطة
سياق TLIST لكل.
EXIT الوضع
يخرج استخدام pt-table-Usage 1 عند أي نوع من الأخطاء ، أو 0 إذا لم تكن هناك أخطاء.
OPTIONS
تقبل هذه الأداة وسيطات سطر أوامر إضافية. الرجوع إلى "SYNOPSIS" والاستخدام
المعلومات للحصول على التفاصيل.
- مهمة تمرير
المطالبة بكلمة مرور عند الاتصال بـ MySQL.
- شارست
شكل قصير: -A ؛ النوع: سلسلة
مجموعة الأحرف الافتراضية. إذا كانت القيمة utf8 ، فقم بتعيين binmode Perl في STDOUT إلى utf8 ،
يمرر الخيار mysql_enable_utf8 إلى DBD :: mysql ، ويقوم بتشغيل SET NAMES UTF8 بعد
الاتصال بـ MySQL. أي قيمة أخرى تعين binmode على STDOUT بدون طبقة utf8 ،
وتشغيل SET NAMES بعد الاتصال بـ MySQL.
- تكوين
النوع: صفيف
اقرأ قائمة ملفات التكوين المفصولة بفواصل ؛ إذا تم تحديد ذلك ، يجب أن يكون هذا هو الأول
الخيار في سطر الأوامر.
- قيمة البيانات الثابتة
اكتب: سلسلة ؛ الافتراضي: DUAL
جدول للطباعة كمصدر لبيانات ثابتة (حرفية). هذه هي أي بيانات لا
تم استرداده من الجداول (أو الاستعلامات الفرعية ، لأن الاستعلامات الفرعية غير معتمدة). هذا
يتضمن القيم الحرفية مثل السلاسل ("foo") والأرقام (42) ، أو وظائف مثل
"الآن()". على سبيل المثال ، في طلب البحث "INSERT INTO t (c) VALUES ('a')" ، فإن السلسلة "a"
هي بيانات ثابتة ، لذا فإن تقرير استخدام الجدول هو:
أدخل ر
حدد DUAL
يشير السطر الأول إلى أن الاستعلام يدرج البيانات في الجدول "t" ، والثاني
يشير السطر إلى أن البيانات المدرجة تأتي من قيمة ثابتة.
- [لا] استمر في الخطأ
الافتراضي: نعم
استمر في العمل حتى إذا كان هناك خطأ.
- إنشاء تعريفات الجدول
النوع: مجموعة
اقرأ تعريفات "إنشاء جدول" من قائمة الملفات المفصولة بفواصل. اذا أنت
لا يمكن استخدام "شرح موسع" لتأهيل أسماء الجداول والأعمدة بشكل كامل ، يمكنك حفظ
إخراج "mysqldump - no-data" إلى ملف واحد أو أكثر وتحديد تلك الملفات باستخدام
هذا الخيار. ستقوم الأداة بتحليل جميع تعريفات "إنشاء جدول" من الملفات وملفات
استخدم هذه المعلومات لتأهيل أسماء الجداول والأعمدة. إذا ظهر اسم العمود في
جداول متعددة ، أو يظهر اسم جدول في قواعد بيانات متعددة ، لا يمكن للغموض
يمكن حلها.
- دمّر
شوكة في الخلفية وفصلها عن الغلاف. أنظمة تشغيل POSIX فقط.
--قاعدة البيانات
شكل قصير: -D ؛ النوع: سلسلة
قاعدة البيانات الافتراضية.
- ملف الافتراضات
شكل قصير: -F ؛ النوع: سلسلة
اقرأ فقط خيارات mysql من الملف المحدد. يجب أن تعطي اسم مسار مطلق.
- شرح ممتد
النوع: DSN
خادم لتنفيذ استعلامات EXPLAIN EXTENDED. قد يكون هذا ضروريًا للحل
أسماء الأعمدة والجدول الغامضة (غير المؤهلة).
--منقي
النوع: سلسلة
تجاهل الأحداث التي لا يكون رمز Perl صحيحًا لها.
هذا الخيار عبارة عن سلسلة من كود Perl أو ملف يحتوي على كود Perl تم تجميعه
في روتين فرعي مع وسيطة واحدة: $ event. إذا كانت القيمة المقدمة عبارة عن ملف قابل للقراءة ،
ثم يقرأ pt-table-Usage الملف بأكمله ويستخدم محتوياته كرمز.
يتم تنفيذ المرشحات بنفس الطريقة المستخدمة في أداة pt-query-Digger ، لذا رجاءً
الرجوع إلى وثائقها لمزيد من المعلومات.
--مساعدة
إظهار المساعدة والخروج.
--مضيف
شكل قصير: -h ؛ النوع: سلسلة
اتصل بالمضيف.
--id- السمة
النوع: سلسلة
حدد كل حدث باستخدام هذه السمة. الافتراضي هو استخدام معرف الاستعلام ، وهو
مجموع اختباري MD5 لبصمة الاستعلام.
--سجل
النوع: سلسلة
اطبع كل الإخراج إلى هذا الملف عند شفاءه.
--كلمه السر
شكل قصير: -p ؛ النوع: سلسلة
كلمة المرور لاستخدامها عند الاتصال. إذا كانت كلمة المرور تحتوي على فاصلات ، فيجب تخطيها
بشرطة مائلة للخلف: "exam \، ple"
--معرّف
النوع: سلسلة
قم بإنشاء ملف PID المحدد. لن تبدأ الأداة إذا كان ملف PID موجودًا بالفعل و
معرف المنتج الذي يحتوي عليه يختلف عن معرف المنتج الحالي. ومع ذلك ، إذا كان ملف PID
موجود ولم يعد PID الذي يحتويه قيد التشغيل ، وستقوم الأداة بالكتابة فوق PID
ملف مع PID الحالي. تتم إزالة ملف PID تلقائيًا عند خروج الأداة.
--ميناء
شكل قصير: -P ؛ النوع: int
رقم المنفذ المراد استخدامه للاتصال.
--تقدم
النوع: مجموعة ؛ الافتراضي: الوقت ، 30
طباعة تقارير التقدم إلى STDERR. القيمة عبارة عن قائمة مفصولة بفواصل مكونة من جزأين.
يمكن أن يكون الجزء الأول النسبة المئوية أو الوقت أو التكرارات ؛ الجزء الثاني يحدد كيف
غالبًا ما يجب طباعة تحديث ، بالنسبة المئوية ، أو الثواني ، أو عدد التكرارات.
--استفسار
النوع: سلسلة
قم بتحليل الاستعلام المحدد بدلاً من قراءة ملف السجل.
--إنتهى وقت القراءة
النوع: الوقت ؛ الافتراضي: 0
انتظر هذا طويلا لحدث من الإدخال ؛ 0 للانتظار إلى الأبد.
يعيّن هذا الخيار الحد الأقصى لوقت انتظار حدث من الإدخال. إذا كان الحدث
لم يتم استلامه بعد الوقت المحدد ، تتوقف الأداة عن قراءة الإدخال وتطبعه
التقارير.
يتطلب هذا الخيار وحدة Perl POSIX.
--مدة العرض
النوع: الوقت
كم من الوقت للركض قبل الخروج. الافتراضي هو التشغيل إلى الأبد (يمكنك المقاطعة مع
CTRL-C).
- مجموعة فارز
النوع: صفيف
قم بتعيين متغيرات MySQL في هذه القائمة المفصولة بفواصل لأزواج "المتغير = القيمة".
بشكل افتراضي ، تحدد الأداة:
wait_timeout = 10000
تتجاوز المتغيرات المحددة في سطر الأوامر هذه الإعدادات الافتراضية. على سبيل المثال،
يؤدي تحديد "--set-vars wait_timeout = 500" إلى تجاوز القيمة الافتراضية البالغة 10000.
تقوم الأداة بطباعة تحذير وتستمر في حالة عدم إمكانية تعيين متغير.
--قابس كهرباء
أشكال قصيرة؛ النوع: سلسلة
ملف مأخذ التوصيل لاستخدامه.
--المستعمل
شكل قصير: -u ؛ النوع: سلسلة
مستخدم لتسجيل الدخول إذا لم يكن المستخدم الحالي.
--الإصدار
عرض الإصدار والخروج.
DSN OPTIONS
تُستخدم خيارات DSN هذه لإنشاء DSN. يتم إعطاء كل خيار مثل "الخيار = القيمة".
تعتبر الخيارات حساسة لحالة الأحرف ، لذا فإن P و p ليستا نفس الخيار. لا يمكن أن يكون هناك
مسافة بيضاء قبل أو بعد "=" وإذا كانت القيمة تحتوي على مسافة بيضاء ، فيجب ذكرها.
تكون خيارات DSN مفصولة بفواصل. راجع صفحة دليل مجموعة أدوات percona للحصول على التفاصيل الكاملة.
· أ
dsn: محارف ؛ نسخ: نعم
مجموعة الأحرف الافتراضية.
· د
نسخ: لا
قاعدة البيانات الافتراضية.
F
dsn: mysql_read_default_file ؛ نسخ: لا
اقرأ الخيارات الافتراضية من الملف المحدد فقط
· ح
dsn: مضيف ؛ نسخ: نعم
اتصل بالمضيف.
· ص
dsn: كلمة المرور ؛ نسخ: نعم
كلمة المرور لاستخدامها عند الاتصال. إذا كانت كلمة المرور تحتوي على فاصلات ، فيجب تخطيها
بشرطة مائلة للخلف: "exam \، ple"
· ص
dsn: منفذ ؛ نسخ: نعم
رقم المنفذ المراد استخدامه للاتصال.
· س
dsn: mysql_socket ؛ نسخ: لا
ملف مأخذ التوصيل لاستخدامه.
· ش
dsn: مستخدم ؛ نسخ: نعم
مستخدم لتسجيل الدخول إذا لم يكن المستخدم الحالي.
البيئة
متغير البيئة "PTDEBUG" يتيح إخراج التصحيح المطول إلى STDERR. لتمكين
تصحيح الأخطاء والتقاط جميع المخرجات في ملف ، قم بتشغيل الأداة مثل:
PTDEBUG = 1 pt-table-Usage ...> FILE 2> & 1
كن حذرًا: إخراج التصحيح ضخم ويمكن أن يولد عدة ميغا بايت من المخرجات.
نظام المتطلبات
أنت بحاجة إلى Perl و DBI و DBD :: mysql وبعض الحزم الأساسية التي يجب تثبيتها في أي
إصدار جديد معقول من لغة Perl.
استخدم pt-table-usagep عبر الإنترنت باستخدام خدمات onworks.net