Це команда pt-table-usagep, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
pt-table-usage - Аналізуйте, як запити використовують таблиці.
СИНТАКСИС
Використання: pt-table-usage [OPTIONS] [FILES]
pt-table-usage читає запити з журналу та аналізує, як вони використовують таблиці. Якщо немає FILE
зазначено, він читає STDIN. Він друкує звіт для кожного запиту.
РИЗИКИ
Percona Toolkit є зрілим, перевіреним у реальному світі та добре перевіреним, але вся база даних
інструменти можуть становити ризик для системи та сервера баз даних. Перш ніж використовувати цей інструмент,
будь ласка:
· Прочитайте документацію до інструменту
· Перегляньте відомі "ПОМИЛКИ" інструмента
· Перевірте інструмент на невиробничому сервері
· Створіть резервну копію робочого сервера та перевірте резервні копії
ОПИС
pt-table-usage читає запити з журналу та аналізує, як вони використовують таблиці. Журнал повинен
бути у форматі журналу повільних запитів MySQL.
Використання таблиці — це більше, ніж просто вказівка на те, які таблиці читає чи записує запит.
Він також вказує на потік даних: дані вхідні та вихідні. Інструмент визначає потік даних
контексти, в яких відображаються таблиці. Один запит може використовувати таблицю в кількох різних
контексти одночасно. Вихід інструмента містить список усіх контекстів для кожної таблиці. Це
Список CONTEXT-TABLE вказує, як дані переміщуються між таблицями. У розділі "ВИХОД" наведено список
можливі контексти та описує, як читати звіт про використання таблиці.
Інструмент аналізує потік даних до рівня окремих стовпців, тому корисно, якщо
стовпці однозначно визначаються в запиті. Якщо запит використовує лише одну таблицю, то
всі стовпці мають бути з цієї таблиці, і немає ніяких труднощів. Але якщо запит використовує
кілька таблиць і назви стовпців не відповідають таблиці, то необхідно використовувати
"EXPLAIN EXTENDED", а потім "ПОКАЗАТИ ПОПЕРЕДЖЕННЯ", щоб визначити, до яких таблиць належать стовпці
належать.
Якщо інструмент не знає базу даних запиту за замовчуванням, що може статися, коли база даних
не надруковано в журналі, то "EXPLAIN EXTENDED" може вийти з ладу. У цьому випадку можна вказати
база даних за замовчуванням з "--database". Ви також можете використовувати "--create-table-definitions"
можливість допомогти вирішити неясності.
ВИХІД
Інструмент друкує звіт про використання для кожної таблиці в кожному запиті, подібно до такого:
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 ЯК ПРИЄДНУЄТЬСЯ t2 ЯК b ВИКОРИСТАННЯ (id)
SET a.foo="bar", b.foo="bat"
ДЕ a.id=1;
Речення "SET" вказує, що запит оновлює дві таблиці: "a" з псевдонімом "t1" і "b"
псевдонімом «t2».
Після першого рядка інструмент друкує змінну кількість рядків CONTEXT-TABLE. Можливий
контексти такі:
· ВИБІР
SELECT означає, що запит отримує дані з таблиці з однієї з двох причин. The
перший має бути повернений користувачеві як частина набору результатів. Тільки запити SELECT
повертають набори результатів, тому звіт завжди показує контекст SELECT для запитів SELECT.
Другий випадок — це коли дані надходять до іншої таблиці як частина INSERT або UPDATE.
Наприклад, запит UPDATE у прикладі вище має таке використання:
ВИБЕРІТЬ DUAL
Це стосується:
SET a.foo="bar", b.foo="bat"
Інструмент використовує DUAL для будь-яких значень, які не походять із таблиці, у цьому випадку значення
літерні значення "bar" і "bat". Якщо це положення "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 і DELETE для кількох таблиць.
· ПРИЄДНУЙТЕСЯ
Контекст JOIN містить список таблиць, які об’єднані, або з явним JOIN в
FROM або неявно в реченні WHERE, наприклад "t1.id = t2.id".
· ДЕ
Контекст WHERE перелічує таблиці, які використовуються в пропозиції WHERE для фільтрації результатів.
Це не включає таблиці, які неявно об’єднані в речення WHERE; ті
перелічено як контексти JOIN. Наприклад:
ДЕ t1.id > 100 І t1.id < 200 І t2.foo НЕ Є NULL
Призводить до:
ДЕ t1
ДЕ t2
Інструмент відображає лише окремі таблиці; тому таблиця "t1" вказана лише один раз.
· TLIST
Контекст TLIST перелічує таблиці, до яких звертається запит, але які не відображаються в жодній
інший контекст. Ці таблиці зазвичай є неявним декартовим з’єднанням. Наприклад,
запит "SELECT * FROM t1, t2" призводить до:
Ідентифікатор запиту: 0xBDEB6EDA41897A8.1
ВИБЕРІТЬ t1
ВИБЕРІТЬ t2
TLIST t1
TLIST t2
Перш за все, є два контексти SELECT, тому що "SELECT *" вибирає рядки з усіх
столи; "t1" і "t2" у цьому випадку. По-друге, таблиці неявно з’єднуються, але
без будь-якої умови з'єднання, що призводить до декартового з'єднання, як зазначено
контекст TLIST для кожного.
EXIT СТАТУС
pt-table-usage виходить із 1 у разі будь-якої помилки або 0, якщо помилок немає.
ВАРІАНТИ
Цей інструмент приймає додаткові аргументи командного рядка. Зверніться до розділу «СІНОПСИС» та використання
інформацію для деталей.
--запитай-пройди
Запитувати пароль при підключенні до MySQL.
--набір символів
коротка форма: -А; тип: рядок
Набір символів за замовчуванням. Якщо значення - utf8, встановлює binmode Perl на STDOUT на utf8,
передає параметр mysql_enable_utf8 в DBD::mysql і запускає SET NAMES UTF8 після
підключення до MySQL. Будь-яке інше значення встановлює binmode на STDOUT без рівня utf8,
і запускає SET NAMES після підключення до MySQL.
--config
тип: масив
Прочитайте цей розділений комами список конфігураційних файлів; якщо вказано, це має бути першим
параметр у командному рядку.
--константа-значення-дані
тип: рядок; за замовчуванням: DUAL
Таблиця для друку як джерело для константних даних (літералів). Це не будь-які дані
витягується з таблиць (або підзапитів, оскільки підзапити не підтримуються). Це
включає літерні значення, такі як рядки ("foo") і числа (42), або такі функції, як
«ЗАРАЗ ()». Наприклад, у запиті "INSERT INTO t (c) VALUES ('a')" рядок "a"
є постійними даними, тому звіт про використання таблиці такий:
ВСТАВИТИ т
ВИБЕРІТЬ DUAL
Перший рядок вказує, що запит вставляє дані в таблицю "t", а другий
рядок вказує, що вставлені дані походять з деякого постійного значення.
--[no]continue-on-error
за замовчуванням: так
Продовжуйте працювати, навіть якщо є помилка.
--create-table-definitions
тип: масив
Прочитайте визначення "CREATE TABLE" з цього списку файлів, розділених комами. Якщо ви
не можна використовувати «--explain-extended» для повної кваліфікації назв таблиць і стовпців, ви можете зберегти
виведення "mysqldump --no-data" в один або кілька файлів і вкажіть ці файли з
цей варіант. Інструмент проаналізує всі визначення "CREATE TABLE" з файлів і
використовуйте цю інформацію для визначення назв таблиць і стовпців. Якщо назва стовпця з’являється в
кілька таблиць або ім'я таблиці з'являється в кількох базах даних, неоднозначності не можуть
бути вирішеним.
--демонізувати
Розділіть на задній план і від’єднайте від оболонки. Лише операційні системи POSIX.
--база даних
коротка форма: -D; тип: рядок
База даних за замовчуванням.
--defaults-файл
коротка форма: -F; тип: рядок
Читайте лише параметри mysql із зазначеного файлу. Ви повинні вказати абсолютний шлях.
--пояснити-розширити
тип: DSN
Сервер для виконання запитів EXPLAIN EXTENDED. Це може знадобитися для вирішення
неоднозначні (некваліфіковані) імена стовпців і таблиць.
--фільтр
тип: рядок
Відкидати події, для яких цей Perl-код не повертає true.
Цей параметр являє собою рядок коду Perl або файл, що містить код Perl, який компілюється
у підпрограму з одним аргументом: $event. Якщо дане значення є читаним файлом,
потім pt-table-usage зчитує весь файл і використовує його вміст як код.
Фільтри реалізовані так само, як і в інструменті pt-query-digest, тому будь ласка
зверніться до його документації для отримання додаткової інформації.
--допомога
Показати довідку та вийти.
--господар
коротка форма: -h; тип: рядок
Підключитися до хоста.
--ід-атрибут
тип: рядок
Визначте кожну подію за допомогою цього атрибута. За замовчуванням використовується ідентифікатор запиту, який є
контрольна сума MD5 відбитка пальця запиту.
-- журнал
тип: рядок
Друкувати весь вихід у цей файл при демонізації.
--пароль
коротка форма: -p; тип: рядок
Пароль для використання під час підключення. Якщо пароль містить коми, їх потрібно екранувати
із зворотною косою рискою: "іспит\,ple"
--під
тип: рядок
Створіть заданий файл PID. Інструмент не запуститься, якщо файл PID вже існує і
PID, який він містить, відрізняється від поточного PID. Однак, якщо файл PID
існує, а PID, який він містить, більше не працює, інструмент перезапише PID
файл із поточним PID. Файл PID видаляється автоматично, коли інструмент виходить.
--порт
коротка форма: -П; тип: внутр
Номер порту для підключення.
-- прогрес
тип: масив; за замовчуванням: час,30
Друкуйте звіти про прогрес на STDERR. Значенням є список із двох частин, розділений комами.
Перша частина може бути відсотком, часом або ітераціями; друга частина визначає, як
часто оновлення має бути надруковано у відсотках, секундах або кількості ітерацій.
--запит
тип: рядок
Аналізуйте вказаний запит замість читання файлу журналу.
--час очікування читання
тип: час; за замовчуванням: 0
Зачекайте так довго на подію з входу; 0 чекати вічно.
Цей параметр встановлює максимальний час очікування події від входу. Якщо подія є
не отриманий через зазначений час, інструмент припиняє зчитувати введений текст і друкує його
звіти.
Для цього параметра потрібен модуль Perl POSIX.
-- час виконання
тип: час
Скільки часу бігти до виходу. За замовчуванням виконується вічно (ви можете переривати за допомогою
CTRL-C).
--set-varis
тип: масив
Встановіть змінні MySQL у цьому списку пар "змінна=значення", розділених комами.
За замовчуванням інструмент встановлює:
час очікування=10000
Змінні, зазначені в командному рядку, замінюють ці значення за замовчуванням. Наприклад,
зазначення "--set-vars wait_timeout=500" замінює значення за замовчуванням 10000.
Інструмент друкує попередження та продовжує роботу, якщо не вдається встановити змінну.
--розетка
коротка форма: -S; тип: рядок
Файл сокета для підключення.
--користувач
коротка форма: -у; тип: рядок
Користувач для входу, якщо не поточний користувач.
-- версія
Показати версію та вийти.
dsn ВАРІАНТИ
Ці параметри DSN використовуються для створення DSN. Кожна опція задається як "option=value".
Параметри чутливі до регістру, тому P і p не є однаковими параметрами. Не може бути
пробіл перед або після "=", і якщо значення містить пробіли, його потрібно взяти в лапки.
Параметри DSN розділяються комами. Для отримання повної інформації див.
· А
dsn: набір символів; копія: так
Набір символів за замовчуванням.
· Д
копія: ні
База даних за замовчуванням.
· Ф
dsn: mysql_read_default_file; копія: ні
Читайте лише параметри за замовчуванням із заданого файлу
· Год
dsn: хост; копія: так
Підключитися до хоста.
· с
dsn: пароль; копія: так
Пароль для використання під час підключення. Якщо пароль містить коми, їх потрібно екранувати
із зворотною косою рискою: "іспит\,ple"
· П
dsn: порт; копія: так
Номер порту для підключення.
· С
dsn: mysql_socket; копія: ні
Файл сокета для підключення.
· у
dsn: користувач; копія: так
Користувач для входу, якщо не поточний користувач.
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
Змінна середовища "PTDEBUG" дозволяє вивести детальний налагодження в STDERR. Для того, щоб
налагодження та захоплення всього результату у файл, запустіть інструмент, як:
PTDEBUG=1 використання pt-таблиці ... > ФАЙЛ 2>&1
Будьте обережні: результат налагодження об’ємний і може генерувати кілька мегабайт.
SYSTEM ВИМОГИ
Вам потрібен Perl, DBI, DBD::mysql і деякі основні пакети, які слід встановити в будь-якому
досить нова версія Perl.
Використовуйте pt-table-usagep онлайн за допомогою служб onworks.net