انگلیسیفرانسویاسپانیایی

فاویکون OnWorks

pt-visual-explainp - آنلاین در ابر

اجرای pt-visual-explainp در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS

این دستور pt-visual-explainp است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


pt-visual-explain - خروجی EXPLAIN را به صورت درختی فرمت کنید.

خلاصه


استفاده: pt-visual-explain [OPTIONS] [FILES]

pt-visual-explain خروجی EXPLAIN را به یک نمایش درختی از طرح پرس و جو تبدیل می کند.
اگر FILE داده شود، ورودی از فایل(ها) خوانده می شود. بدون فایل، یا زمانی که FILE - است، بخوانید
ورودی استاندارد

مثال:

pt-visual-explain

pt-visual-explain -c

mysql -e "توضیح انتخاب * از mysql.user" | pt-visual-explain

خطرات


Percona Toolkit بالغ است، در دنیای واقعی اثبات شده است، و به خوبی آزمایش شده است، اما همه پایگاه داده است
ابزارها می توانند برای سیستم و سرور پایگاه داده خطر ایجاد کنند. قبل از استفاده از این ابزار،
لطفا:

· اسناد ابزار را بخوانید

· بررسی "BUGS" شناخته شده ابزار

· ابزار را روی یک سرور غیر تولیدی تست کنید

· از سرور تولید خود نسخه پشتیبان تهیه کنید و پشتیبان گیری را تأیید کنید

شرح


pt-visual-explain reverse-engineers خروجی EXPLAIN MySQL در طرح اجرای پرس و جو،
که سپس آن را به عنوان یک درخت به سمت چپ قالب بندی می کند -- به همان شکلی که طرح در داخل نمایش داده می شود
MySQL. امکان انجام این کار با دست یا خواندن مستقیم خروجی EXPLAIN وجود دارد، اما این امکان وجود دارد
نیاز به صبر و تخصص دارد بسیاری از مردم بازنمایی درخت را بیشتر پیدا می کنند
قابل درک

می توانید ورودی را به pt-visual-explain وارد کنید یا یک نام فایل را در خط فرمان مشخص کنید.
از جمله نام فایل جادویی '-'، که از ورودی استاندارد خوانده می شود. می تواند دو کار کند
چیزهایی با ورودی: آن را برای چیزی که شبیه خروجی EXPLAIN است تجزیه کنید، یا وصل کنید
به یک نمونه MySQL و EXPLAIN را در ورودی اجرا کنید.

هنگام تجزیه ورودی، pt-visual-explain سه قالب را درک می کند: جدولی مانند آن
در سرویس گیرنده خط فرمان mysql، عمودی مانند آنچه با استفاده از خط \G ایجاد شده است نشان داده شده است
ترمیناتور در سرویس گیرنده خط فرمان mysql و تب جدا شده است. هر خطی را نادیده می گیرد
نمی داند چگونه تجزیه کند

هنگام اجرای ورودی، pt-visual-explain جایگزین همه چیز در ورودی می شود.
ابتدا کلمه کلیدی SELECT را با 'EXPLAIN SELECT' انتخاب کنید و سپس نتیجه را اجرا کنید. شما باید
"--connect" را برای اجرای ورودی به عنوان پرس و جو مشخص کنید.

در هر صورت، یک درخت از مجموعه نتیجه می سازد و آن را در خروجی استاندارد چاپ می کند. برای
پرس و جو زیر،

انتخاب * از sakila.film_actor join sakila.film using(film_id);

pt-visual-explain این طرح پرس و جو را تولید می کند:

بپیوندید
+- جستجوی نشانک
| +- جدول
| | فیلم میز_بازیگر
| | کلیدهای ممکن idx_fk_film_id
| +- جستجوی فهرست
| کلید فیلم_بازیگر->idx_fk_film_id
| کلیدهای ممکن idx_fk_film_id
| key_len 2
| ref sakila.film.film_id
| ردیف 2
+- اسکن جدول
ردیف 952
+- جدول
فیلم رومیزی
کلیدهای_ممکن اولیه

طرح پرس و جو در سمت چپ عمیق، جستجوی اول عمق است و ریشه درخت گره خروجی است --
آخرین مرحله در برنامه اجرایی به عبارت دیگر، آن را اینگونه بخوانید:

1. جدول جدول «فیلم» را اسکن کنید، که به 952 ردیف تخمینی دسترسی دارد.

2. برای هر سطر، ردیف های منطبق را با جستجوی فهرست در آن پیدا کنید
فیلم_actor->idx_fk_film_id ایندکس با مقدار sakila.film.film_id، سپس یک
جستجوی نشانک در جدول film_actor.

برای اطلاعات بیشتر در مورد نحوه خواندن خروجی EXPLAIN، لطفاً ببینید
<http://dev.mysql.com/doc/en/explain.html>، و این سخنرانی با عنوان "بهینه ساز پرس و جو MySQL
داخلی ها و ویژگی های آینده در نسخه 5.2": از تیمور کاتچائونوف، یکی از MySQL
توسعه دهندگان:http://goo.gl/VIWvo>

مدولا


این برنامه در واقع یک ماژول قابل اجرا است، نه فقط یک اسکریپت معمولی Perl. در حقیقت،
دو ماژول در آن تعبیه شده است. این امر تست واحد را آسان می کند، اما آن را نیز آسان می کند
در صورت تمایل می توانید از قابلیت تجزیه و درخت سازی استفاده کنید.

بسته ExplainParser یک رشته را می پذیرد و هر چیزی را که به نظر می رسد تجزیه می کند
خروجی از آن را توضیح دهید. خلاصه داستان به شرح زیر است:

نیاز به "pt-visual-explain";
my $p = ExplainParser->new();
my $rows = $p->parse("some text");
# $rows آرایه ای از hashref ها است.

بسته ExplainTree مجموعه ای از ردیف ها را می پذیرد و آن را به درخت تبدیل می کند. برای آسودگی،
همچنین می توانید آن را به ExplainParser واگذار کنید و متن را برای شما تجزیه کنید. اینجاست
خلاصه داستان:

نیاز به "pt-visual-explain";
my $e = ExplainTree->new();
my $tree = $e->parse("some text", \%options);
my $output = $e->pretty_print($tree);
چاپ $tree;

الگوریتم


این بخش الگوریتمی را توضیح می دهد که EXPLAIN را به درخت تبدیل می کند. شما ممکن است
اگر می‌خواهید توضیح کامل‌تر را بفهمید یا سعی می‌کنید این را بخوانید، علاقه‌مندید
بفهمید که چگونه این کار می کند، اما در غیر این صورت احتمالاً این بخش زندگی شما را نخواهد ساخت
ثروتمندتر

درخت را می توان با بررسی ستون های id، select_type و جدول هر سطر ساخت.
در اینجا چیزی است که من در مورد آنها می دانم:

ستون id شماره متوالی انتخاب است. این نشان دهنده لانه سازی نیست. آی تی
فقط از شمارش SELECT از سمت چپ دستور SQL می آید. مثل گرفتن است
پرانتز در یک عبارت منظم ردیف UNION RESULT شناسه ندارد، زیرا دارد
SELECT نیست همانطور که به یاد دارم، کد منبع در واقع به UNION ها به عنوان fake_lex اشاره می کند.

اگر دو ردیف مجاور دارای مقدار شناسه یکسانی باشند، آنها با استاندارد تکی به هم متصل می شوند.
روش Sweep Multi-join.

ستون select_type به الف) می گوید که یک زیرشاخه جدید باز شده است ب) چه نوع
رابطه سطر با سطر قبلی ج) سطر نشان دهنده چه نوع عملیاتی است.

· SIMPLE به این معنی است که هیچ سوال فرعی یا اتحادی در کل پرس و جو وجود ندارد.

· PRIMARY یعنی وجود دارد، اما این بیرونی ترین SELECT است.

· [وابسته] UNION به این معنی است که این نتیجه با نتیجه قبلی UNION شده است (نه ردیف؛ یک
نتیجه ممکن است بیش از یک ردیف را شامل شود).

· UNION RESULT مجموعه ای از نتایج UNION شده را خاتمه می دهد.

· [وابسته|UNCACHEABLE] SUBQUERY به این معنی است که یک زیرمجموعه جدید در حال باز شدن است. این نوع است
پرس و جوی فرعی که در یک عبارت WHERE، لیست SELECT یا هر چیز دیگری اتفاق می افتد. آن بر نمی گردد
به اصطلاح "جدول مشتق شده".

· DERIVED یک پرس و جو فرعی در عبارت FROM است.

جدول هایی که JOIN شده اند، همگی یک select_type دارند. به عنوان مثال، اگر شما به سه عضو شوید
جداول داخل یک پرس و جوی فرعی وابسته، همه آنها یک چیز را می گویند: DEPENDENT SUBQUERY.

ستون جدول معمولاً نام جدول یا نام مستعار را مشخص می کند، اما ممکن است بگوید یا
. اگر می گوید ، ردیف نشان دهنده دسترسی به موقت است
جدولی که نتیجه پرس و جوی فرعی را نگه می دارد که شناسه آن N است. اگر می گوید این است
همان چیزی است، اما به نتایجی که با هم اتحاد می دهد اشاره دارد.

در نهایت، سفارش مهم است. اگر شناسه ردیفی کمتر از قبل باشد، فکر می‌کنم این بدان معناست
وابسته به چیزی غیر از قبل است. مثلا،

توضیح انتخاب کنید
(1 را از sakila.film انتخاب کنید)،
(انتخاب 2 از sakila.film_actor)،
(انتخاب 3 از sakila.actor);

| شناسه | نوع_انتخاب | جدول |
+----+--------------------------+
| 1 | اولیه | NULL |
| 4 | پرس و جوی فرعی | بازیگر |
| 3 | پرس و جوی فرعی | بازیگر_فیلم |
| 2 | پرس و جوی فرعی | فیلم |

اگر نتایج به ترتیب 2-3-4 بود، فکر می کنم به این معنی است که 3 عبارت است از 2، 4 یک است
پرس و جوی فرعی 3. همانطور که هست، این به این معنی است که 4 یک پرسش فرعی از نزدیکترین ردیف اخیر قبلی است.
با یک شناسه کوچکتر که 1 است. به همین ترتیب برای 3 و 2.

ساختن این ساختار به صورت برنامه‌ریزی شده در یک درخت به همان دلیل سخت است
برای درک از طریق بازرسی: هر دو مرجع رو به جلو و عقب وجود دارد.
یک مرجع رو به جلو به selectN، while است یک مرجع معکوس به selectM و است
انتخاب N. این امر باعث می‌شود که الگوریتم‌های بازگشتی و دیگر درخت‌سازی به درستی انجام نشوند (توجه:
پس از اجرا، اکنون می بینم که چگونه می توان با هر دو پیش رو و
ارجاعات عقب مانده، اما من انگیزه ای برای تغییر چیزی که کار می کند ندارم). در نظر گرفتن
به شرح زیر است:

انتخاب * از (
1 را از sakila.actor به عنوان actor_1 انتخاب کنید
اتحادیه
1 را از sakila.actor به عنوان actor_2 انتخاب کنید
) به عنوان der_1
اتحادیه
انتخاب * از (
1 را از sakila.actor به عنوان actor_3 انتخاب کنید
اتحادیه همه
1 را از sakila.actor به عنوان actor_4 انتخاب کنید
) به عنوان der_2;

| شناسه | نوع_انتخاب | جدول |
+------+----------------------------+
| 1 | اولیه | |
| 2 | مشتق شده | بازیگر_1 |
| 3 | اتحادیه | بازیگر_2 |
| NULL | نتیجه اتحادیه | |
| 4 | اتحادیه | |
| 5 | مشتق شده | بازیگر_3 |
| 6 | اتحادیه | بازیگر_4 |
| NULL | نتیجه اتحادیه | |
| NULL | نتیجه اتحادیه | |

اگر اینطور به نظر می رسید کار با آن بسیار ساده تر خواهد بود (من شناسه را در پرانتز قرار داده ام
ردیف هایی که منتقل کردم):

| شناسه | نوع_انتخاب | جدول |
+------+----------------------------+
| [1] | نتیجه اتحادیه | |
| 1 | اولیه | |
| [2] | نتیجه اتحادیه | |
| 2 | مشتق شده | بازیگر_1 |
| 3 | اتحادیه | بازیگر_2 |
| 4 | اتحادیه | |
| [5] | نتیجه اتحادیه | |
| 5 | مشتق شده | بازیگر_3 |
| 6 | اتحادیه | بازیگر_4 |

در واقع، چرا همه شناسه ها را مجددا شماره گذاری نمی کنید تا ردیف PRIMARY 2 شود و غیره؟ که
حتی خواندن آن را آسان تر می کند. متأسفانه این نیز تأثیری خواهد داشت
از بین بردن معنای ستون id، که فکر می کنم حفظ آن در آن مهم است
درخت نهایی همچنین، اگرچه خواندن آن را آسان‌تر می‌کند، اما آن را آسان‌تر نمی‌کند
دستکاری برنامه ای؛ بنابراین خوب است که آنها را همانطور که هستند شماره گذاری کنید.

هدف از مرتب کردن مجدد این است که آسان‌تر بفهمیم کدام ردیف‌ها فرزند آن‌ها هستند
که در طرح اجرا ردیف می شود. با توجه به لیست دوباره مرتب شده و تعدادی ردیف که جدول آن است
یا ، پیدا کردن ابتدای برش ردیف هایی که باید به راحتی انجام شود
گره های فرزند در درخت باشند: شما فقط به دنبال اولین ردیفی که شناسه آن همان است
شماره اول جدول

سوال بعدی این است که چگونه آخرین ردیفی را که باید گره فرزند یک UNION یا باشد پیدا کنیم
نشات گرفته. من با DERIVED شروع می کنم، زیرا راه حل UNION را آسان می کند.

در نظر بگیرید که MySQL چگونه SELECT ها را به ترتیب با توجه به موقعیت آنها در آن شماره گذاری می کند
SQL، از چپ به راست. از آنجایی که یک جدول DERIVED همه چیز را در یک محدوده محصور می کند، که
تبدیل به یک میز موقت می شود، فقط باید به دو چیز فکر کرد: سوالات فرعی آن
و اتحادیه ها (در صورت وجود)، و خواهر و برادر بعدی آن در محدوده ای که آن را در بر می گیرد. بچه هاش
طبق تعریف، همه یک شناسه بزرگتر از آن دارند، بنابراین هر ردیف بعدی با یک کوچکتر
شناسه دامنه را خاتمه می دهد.

در اینجا یک مثال است. جدول مشتق شده وسط در اینجا دارای یک پرسش فرعی و یک UNION برای تبدیل آن به یک است
برای مثال کمی پیچیده تر است.

توضیح انتخاب 1
از جانب (
فیلم_id را از sakila.film limit 1 انتخاب کنید
) به عنوان der_1
پیوستن (
film_id، actor_id، (انتخاب تعداد(*) از sakila.rental) را به عنوان r انتخاب کنید
از sakila.film_actor limit 1
اتحادیه همه
1، 1، 1 را از sakila.film_actor به عنوان ساختگی انتخاب کنید
) به عنوان der_2 با استفاده از (film_id)
پیوستن (
actor_id را از sakila.actor limit 1 انتخاب کنید
) به عنوان der_3 با استفاده از (actor_id);

در اینجا خروجی EXPLAIN است:

| شناسه | نوع_انتخاب | جدول |
| 1 | اولیه | |
| 1 | اولیه | |
| 1 | اولیه | |
| 6 | مشتق شده | بازیگر |
| 3 | مشتق شده | بازیگر_فیلم |
| 4 | پرس و جوی فرعی | اجاره |
| 5 | اتحادیه | ساختگی |
| NULL | نتیجه اتحادیه | |
| 2 | مشتق شده | فیلم |

خواهر و برادرها همه شناسه 1 دارند و وسطی که من به آن اهمیت می دهم مشتق شده است3. (به MySQL توجه کنید
آنها را به ترتیبی که من تعریف کردم اجرا نمی کند، که خوب است). حال توجه کنید که MySQL
سطرها را به ترتیب مخالف چاپ می کند که من سؤالات فرعی را تعریف کردم: 6، 3، 2. همیشه
به نظر می رسد این کار را انجام می دهد، و ممکن است روش های دیگری برای یافتن مرزهای محدوده وجود داشته باشد
از جمله به دنبال مرز پایینی خواهر و برادر بزرگ بعدی، اما این خوب است
اکتشافی کافی من مجبورم برای سوالات فرعی غیر مشتق شده به آن تکیه کنم، بنابراین به آن تکیه می کنم
اینجا هم. بنابراین، من تصمیم می‌گیرم که هر چیزی بزرگتر یا مساوی 3 باشد متعلق به
دامنه مشتق شده

قانون UNION ساده است: آنها کل محدوده محصور را مصرف می کنند و برای پیدا کردن آن
اجزای تشکیل دهنده هر یک، شروع هر قسمت را همانطور که در قسمت اشاره شده است پیدا می کنید
تعریف، و پایان آن یا درست قبل از تعریف بعدی است، یا اگر آن است
قسمت آخر، پایان پایان دامنه است.

این فقط ساده است زیرا UNION کل محدوده را مصرف می کند، که یا کل است
بیانیه، یا محدوده یک جدول مشتق شده. این به این دلیل است که اتحادیه نمی تواند خواهر و برادر باشد
از UNION یا جدول دیگری، مشتق شده یا نه. (اگر اینطور نیست سعی کنید چنین عبارتی بنویسید
آن را به طور شهودی ببینید). بنابراین، شما فقط می توانید مرزهای محدوده محصور را پیدا کنید، و
بقیه آسان است توجه کنید در مثال بالا، UNION به پایان رسیده است ، که
شامل ردیف با شناسه 4 - شامل هر ردیف بین 3 و 5 می شود.

در نهایت، سوالات فرعی غیر مشتق شده نیز وجود دارد که باید با آنها برخورد کرد. در این مورد من نمی توانم نگاه کنم
در خواهر و برادر برای یافتن انتهای محدوده همانطور که برای DERIVED انجام دادم. من باید به MySQL اعتماد کنم
ابتدا عمق را اجرا می کند. در اینجا یک مثال است:

توضیح دادن
actor_id را انتخاب کنید،
(
تعداد را انتخاب کنید (id_film)
+ (انتخاب تعداد(*) از sakila.film)
از sakila.film با استفاده از(film_id) به sakila.film_actor بپیوندید
کجا وجود دارد(
انتخاب * از sakila.actor
جایی که sakila.actor.actor_id = sakila.film_actor.actor_id
)
)
از sakila.actor;

| شناسه | نوع_انتخاب | جدول |
| 1 | اولیه | بازیگر |
| 2 | پرس و جوی فرعی | فیلم |
| 2 | پرس و جوی فرعی | بازیگر_فیلم |
| 4 | استعلام فرعی وابسته | بازیگر |
| 3 | پرس و جوی فرعی | فیلم |

به ترتیب، درخت باید به این صورت ساخته شود:

· ردیف 1 را ببینید.

· ردیف 2 را ببینید. این یک شناسه بالاتر از 1 است، بنابراین یک درخواست فرعی است، همراه با هر ردیف دیگر
که شناسه آن بزرگتر از 2 است.

· در داخل این محدوده، 2 و 2 را ببینید و به آنها بپیوندید. 4 را ببینید. این یک شناسه بالاتر از 2 است، بنابراین
این دوباره یک سوال فرعی است. عود کردن بعد از آن 3 را ببینید که آن هم بالاتر است. عود کردن

اما تنها دلیلی که پرس و جوی فرعی تودرتو انتخاب 3 را شامل نمی شود این است که انتخاب 4 آمده است
اولین. به عبارت دیگر، اگر EXPLAIN به این شکل بود،

| شناسه | نوع_انتخاب | جدول |
| 1 | اولیه | بازیگر |
| 2 | پرس و جوی فرعی | فیلم |
| 2 | پرس و جوی فرعی | بازیگر_فیلم |
| 3 | پرس و جوی فرعی | فیلم |
| 4 | استعلام فرعی وابسته | بازیگر |

من مجبور می شوم با دیدن انتخاب 3 فرض کنم که انتخاب 4 یک پرس و جو فرعی از آن است.
نه فقط خواهر و برادر بعدی بودن در محدوده ی محصور. اگر این اشتباه است، پس
الگوریتم اشتباه است، و من نمی‌دانم چه کاری می‌توان در مورد آن انجام داد.

UNION کمی پیچیده تر از این است که "کل محدوده یک اتحادیه است"، زیرا
UNION ممکن است خود در داخل یک محدوده محصور باشد که فقط با اولین مورد نشان داده شده است
در داخل اتحادیه تنها سه نوع دامنه وجود دارد: UNION، DERIVED، و
پرس و جوی فرعی. یک UNION نمی تواند یک UNION را احاطه کند، و یک DERIVED "نشانگرهای محدوده" خود را دارد، اما
SUBQUERY می تواند به طور کامل یک UNION را محصور کند، مانند این مثال عجیب در جدول خالی t1:

توضیح انتخاب * از t1 جایی که وجود ندارد(
(انتخاب t11.i از t1 t11) اتحاد (انتخاب t12.i از t1 t12));

| شناسه | نوع_انتخاب | جدول | اضافی |
+------+------------------------------------------- -------------------+
| 1 | اولیه | t1 | ردیف const یافت نشد |
| 2 | پرس و جوی فرعی | NULL | هیچ جدولی استفاده نشده |
| 3 | پرس و جوی فرعی | NULL | بدون ردیف منطبق در جدول const |
| 4 | اتحادیه | t12 | ردیف const یافت نشد |
| NULL | نتیجه اتحادیه | | |

ارجاعات عقب افتاده UNION ممکن است به نظر برسد که UNION عبارت فرعی را در بر می گیرد.
اما مطالعه پرس و جو نشان می دهد که این مورد نیست. بنابراین هنگامی که ردیف اول اتحادیه
می گوید SUBQUERY، این مورد خاص است.

به هر حال، من این طرح پرس و جو را کاملاً درک نمی کنم. 4 عدد SELECT در آن وجود دارد
طرح، اما فقط 3 در پرس و جو. پرنس های اطراف اتحادیه ها معنادار هستند. حذف کردن
آنها توضیح را متفاوت خواهند کرد. لطفاً اگر می دانید چگونه و چرا این کار را انجام می دهد به من بگویید.

با داشتن این دانش، می توان از بازگشت برای تبدیل والدین به فرزند استفاده کرد
رابطه بین تمام ردیف ها به یک درخت که طرح اجرا را نشان می دهد.

MySQL سطرها را به ترتیب اجرا چاپ می کند، حتی ارجاعات رو به جلو و عقب را. در
در هر محدوده معینی، ردیف ها به عنوان درختی به سمت چپ پردازش می شوند. MySQL "bushy" را انجام نمی دهد
برنامه های اجرایی با یک جدول شروع می شود، یک ردیف منطبق را در جدول بعدی پیدا می کند و
تا آخرین جدول، زمانی که یک ردیف منتشر می کند، ادامه می یابد. وقتی تمام می شود، عقب می نشیند
می تواند ردیف بعدی را پیدا کند و تکرار کند. البته ظرافت هایی وجود دارد، اما این همان است
طرح اساسی به همین دلیل است که MySQL همه RIGHT OUTER Join ها را به LEFT OUTER Join تبدیل می کند و
نمی توان FULL OUTER JOIN را انجام داد.

این به این معنی است که در هر حوزه ای، مثلاً

| شناسه | نوع_انتخاب | جدول |
| 1 | ساده | tbl1 |
| 1 | ساده | tbl2 |
| 1 | ساده | tbl3 |

طرح اجرا شبیه یک پیمایش در عمق این درخت است:

بپیوندید
/\
به tbl3 بپیوندید
/\
tbl1 tbl2

JOIN ممکن است JOIN نباشد. برای مثال ممکن است یک سوال فرعی باشد. این از
ستون EXPLAIN را تایپ کنید. اسناد می‌گویند که این یک "نوع پیوستن" است، اما من فکر می‌کنم "دسترسی".
type" دقیق تر است، زیرا نحوه دسترسی MySQL به ردیف ها است.

pt-visual-explain درخت را به طور قابل توجهی بیش از تبدیل ردیف ها به گره ها تزئین می کند.
هر گره ممکن است یک سری تبدیل داشته باشد که آن را به یک زیردرخت بیش از یک تبدیل کند
گره برای مثال، اسکن فهرستی که با «استفاده از فهرست» علامت‌گذاری نشده است، باید جستجوی نشانک انجام دهد
در ردیف های جدول؛ که یک زیردرخت سه گره است. با این حال، پس از ترتیب گره فوق
و مسائل مربوط به محدوده، بقیه مراحل بسیار ساده است.

OPTIONS


این ابزار آرگومان های اضافی خط فرمان را می پذیرد. به "خلاصه" و استفاده مراجعه کنید
اطلاعات برای جزئیات

--ask-pass
هنگام اتصال به MySQL یک رمز عبور درخواست کنید.

-- مجموعه حروف
فرم کوتاه: -A; نوع: رشته

مجموعه کاراکترهای پیش فرض اگر مقدار utf8 باشد، حالت binmode Perl را در STDOUT روی utf8 تنظیم کنید.
گزینه mysql_enable_utf8 را به DBD::mysql منتقل می کند و SET NAMES UTF8 را بعد از آن اجرا می کند.
اتصال به MySQL هر مقدار دیگری، binmode را در STDOUT بدون لایه utf8 تنظیم می کند.
و SET NAMES را پس از اتصال به MySQL اجرا می کند.

--clustered-pk
فرض کنید دسترسی های شاخص کلید اولیه برای بازیابی نیازی به جستجوی نشانک ندارند
ردیف ها این مورد برای InnoDB است.

- پیکربندی
نوع: آرایه

این لیست فایل های پیکربندی جدا شده با کاما را بخوانید. اگر مشخص شود، این باید اولین مورد باشد
گزینه در خط فرمان

-- اتصال
ورودی را به عنوان یک پرس و جو در نظر بگیرید و خروجی EXPLAIN را با اتصال به یک نمونه MySQL بدست آورید.
و EXPLAIN را روی پرس و جو اجرا کنید. وقتی این گزینه داده می شود، pt-visual-explain استفاده می کند
سایر گزینه های خاص اتصال مانند "--user" برای اتصال به MySQL
نمونه، مثال. اگر یک فایل .my.cnf دارید، آن را می خواند، بنابراین ممکن است نیازی به تعیین آن نباشد
هر گزینه خاص اتصال

-- پایگاه داده
فرم کوتاه: -D; نوع: رشته

به این پایگاه داده متصل شوید.

---فایل پیش فرض
فرم کوتاه: -F; نوع: رشته

فقط گزینه های mysql را از فایل داده شده بخوانید. شما باید یک pathname مطلق بدهید.

--قالب
نوع: رشته; پیش فرض: درخت

تنظیم فرمت خروجی

پیش‌فرض یک درخت زیبا و مختصر است. مقادیر معتبر عبارتند از:

معنی ارزش
================================================== ===
درخت درخت کوتاه چاپ شده زیبا.
Dump Data::Dumper output (برای اطلاعات بیشتر به Data::Dumper مراجعه کنید).

--کمک
نشان دادن کمک و خروج.

-روح
فرم کوتاه: -h; نوع: رشته

به هاست متصل شوید.

--کلمه عبور
فرم کوتاه: -p; نوع: رشته

رمز عبور برای استفاده در هنگام اتصال. اگر رمز عبور حاوی کاما باشد، باید از آنها فرار کرد
با علامت معکوس: "exam\,ple"

-پید
نوع: رشته

فایل PID داده شده را ایجاد کنید. اگر فایل PID از قبل وجود داشته باشد، ابزار شروع نمی شود
PID موجود در آن با PID فعلی متفاوت است. با این حال، اگر فایل PID
وجود دارد و PID موجود در آن دیگر در حال اجرا نیست، ابزار PID را بازنویسی می کند
فایل با PID فعلی پس از خروج ابزار، فایل PID به طور خودکار حذف می شود.

--بندر
فرم کوتاه: -P; نوع: بین المللی

شماره پورت برای استفاده برای اتصال.

--set-vars
نوع: آرایه

متغیرهای MySQL را در این لیست جفت "variable=value" جدا شده با کاما تنظیم کنید.

به طور پیش فرض، ابزار مجموعه های زیر را تنظیم می کند:

wait_timeout=10000

متغیرهای مشخص شده در خط فرمان این پیش فرض ها را لغو می کنند. مثلا،
با تعیین "--set-vars wait_timeout=500" مقدار پیش فرض 10000 لغو می شود.

ابزار یک هشدار چاپ می کند و اگر متغیری تنظیم نشود ادامه می دهد.

-- سوکت
فرم کوتاه: -S; نوع: رشته

فایل سوکت برای استفاده برای اتصال.

--کاربر
فرم کوتاه: -u; نوع: رشته

کاربر برای ورود اگر کاربر فعلی نیست.

- نسخه
نمایش نسخه و خروج

DSN OPTIONS


این گزینه های DSN برای ایجاد یک DSN استفاده می شود. هر گزینه مانند "option=value" داده می شود.
گزینه ها به حروف بزرگ و کوچک حساس هستند، بنابراین P و p یک گزینه نیستند. نمی تواند وجود داشته باشد
فضای خالی قبل یا بعد از "="" و اگر مقدار دارای فضای خالی باشد باید نقل قول شود.
گزینه های DSN با کاما از هم جدا شده اند. برای جزئیات کامل به صفحه مدیریت percona-toolkit مراجعه کنید.

· آ

dsn: charset; کپی: بله

مجموعه کاراکترهای پیش فرض

· د

dsn: پایگاه داده; کپی: بله

پایگاه داده پیش فرض

· اف

dsn: mysql_read_default_file; کپی: بله

فقط گزینه های پیش فرض را از فایل داده شده بخوانید

· ساعت

dsn: میزبان; کپی: بله

به هاست متصل شوید.

· پ

dsn: رمز عبور; کپی: بله

رمز عبور برای استفاده در هنگام اتصال. اگر رمز عبور حاوی کاما باشد، باید از آنها فرار کرد
با علامت معکوس: "exam\,ple"

· پ

dsn: پورت; کپی: بله

شماره پورت برای استفاده برای اتصال.

· س

dsn: mysql_socket; کپی: بله

فایل سوکت برای استفاده برای اتصال.

· تو

dsn: user; کپی: بله

کاربر برای ورود اگر کاربر فعلی نیست.

محیط زیست


متغیر محیطی "PTDEBUG" خروجی اشکال زدایی کامل را در STDERR فعال می کند. برای فعال کردن
اشکال زدایی و ضبط تمام خروجی ها در یک فایل، ابزار را مانند:

PTDEBUG=1 pt-visual-explain ... > FILE 2>&1

مراقب باشید: خروجی اشکال زدایی حجیم است و می تواند چندین مگابایت خروجی تولید کند.

SYSTEM الزامات


شما به Perl، DBI، DBD::mysql و برخی از بسته های اصلی نیاز دارید که باید در هر کدام از آنها نصب شوند.
نسخه نسبتاً جدید پرل.

از pt-visual-explainp به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    PSI
    PSI
    Psi XMPP قدرتمند بین پلتفرمی است
    مشتری برای کاربران با تجربه طراحی شده است.
    بیلدهایی برای ام اس وجود دارد
    ویندوز، گنو/لینوکس و macOS.. مخاطب:
    کاربران نهایی ...
    Psi را دانلود کنید
  • 2
    بلابی والی 2
    بلابی والی 2
    ادامه رسمی معروف
    بازی آرکید Blobby Volley 1.x..
    مخاطب: کاربران نهایی/رومیزی. کاربر
    رابط: OpenGL، SDL. برنامه نويسي
    زبان: C++، Lua. سی...
    دانلود Blobby Volley 2
  • 3
    SuiteCRM
    SuiteCRM
    SuiteCRM مشتری برنده جایزه است
    مدیریت روابط (CRM)
    برنامه ای که توسط نویسندگان برای شما آورده شده است
    و نگهبانان، SalesAgility. آن است
    موی جهان...
    دانلود SuiteCRM
  • 4
    پاورادمین
    پاورادمین
    Poweradmin یک DNS مبتنی بر وب است
    ابزار مدیریت برای سرور PowerDNS.
    این رابط برای اکثر آنها پشتیبانی کامل دارد
    از ویژگی های PowerDNS پر دارد
    پشتیبانی...
    پاورادمین را دانلود کنید
  • 5
    چارچوب وب جین
    چارچوب وب جین
    جین یک چارچوب وب فوق العاده سریع است
    به زبان Golang نوشته شده است که می تواند تا
    40 برابر سریعتر، به لطف آن
    API مانند مارتینی و نسخه سفارشی
    httprout...
    جین وب فریم ورک را دانلود کنید
  • 6
    سرئوس لینوکس
    سرئوس لینوکس
    CEREUS LINUX basado en MX LINUX con
    varios entornos de escritorios. این هست
    برنامه ای که می توان آن را نیز واکشی کرد
    از جانب
    https://sourceforge.net/projects/cereu...
    CEREUS LINUX را دانلود کنید
  • بیشتر "

دستورات لینوکس

Ad