Amazon Best VPN GoSearch

OnWorks favicon

pt-query-digestp - Online sa Cloud

Patakbuhin ang pt-query-digestp sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na pt-query-digestp na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


pt-query-digest - Suriin ang mga query sa MySQL mula sa mga log, processlist, at tcpdump.

SINOPSIS


Paggamit: pt-query-digest [OPTIONS] [FILES] [DSN]

Sinusuri ng pt-query-digest ang mga query sa MySQL mula sa mabagal, pangkalahatan, at binary na mga log file. Maaari itong
suriin din ang mga query mula sa "SHOW PROCESSLIST" at MySQL protocol data mula sa tcpdump. Sa pamamagitan ng
default, ang mga query ay pinagsama-sama sa pamamagitan ng fingerprint at iniuulat sa pababang pagkakasunud-sunod ng oras ng query
(ibig sabihin, ang pinakamabagal na query muna). Kung walang ibinigay na "FILES", ang babasahin ng tool ay "STDIN". Ang
ang opsyonal na "DSN" ay ginagamit para sa ilang partikular na opsyon tulad ng "--since" at "--until".

Iulat ang pinakamabagal na mga query mula sa "slow.log":

pt-query-digest slow.log

Iulat ang pinakamabagal na query mula sa processlist sa host1:

pt-query-digest --processlist h=host1

Kunin ang data ng MySQL protocol gamit ang tcppdump, pagkatapos ay iulat ang pinakamabagal na mga query:

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt

pt-query-digest --type tcpdump mysql.tcp.txt

I-save ang data ng query mula sa "slow.log" patungo sa host2 para sa pagsusuri sa ibang pagkakataon at pagsusuri sa trend:

pt-query-digest --review h=host2 --no-report slow.log

PELIGRASO


Ang Percona Toolkit ay mature, napatunayan sa totoong mundo, at mahusay na nasubok, ngunit lahat ng database
Ang mga tool ay maaaring magdulot ng panganib sa system at sa database server. Bago gamitin ang tool na ito,
mangyaring:

· Basahin ang dokumentasyon ng tool

· Suriin ang kilalang "BUGS" ng tool

· Subukan ang tool sa isang server na hindi produksyon

· I-backup ang iyong production server at i-verify ang mga backup

DESCRIPTION


Ang pt-query-digest ay isang sopistikado ngunit madaling gamitin na tool para sa pagsusuri ng mga query sa MySQL. Ito
maaaring suriin ang mga query mula sa MySQL mabagal, pangkalahatan, at binary log. (Ang mga binary log ay dapat muna
na-convert sa text, tingnan ang "--type"). Maaari din itong gumamit ng "SHOW PROCESSLIST" at MySQL protocol
data mula sa tcpdump. Bilang default, iniuulat ng tool kung aling mga query ang pinakamabagal, at
samakatuwid ang pinakamahalagang i-optimize. Maaaring maging mas kumplikado at pinasadyang mga ulat
nilikha sa pamamagitan ng paggamit ng mga opsyon tulad ng "--group-by", "--filter", at "--embedded-attributes".

Ang pagsusuri ng query ay isang pinakamahusay na kasanayan na dapat gawin nang madalas. Upang gawing mas madali ito,
May dalawang feature ang pt-query-digest: query review ("--review") at query history
("--kasaysayan"). Kapag ginamit ang opsyong "--review", lahat ng natatanging query ay nai-save sa a
database. Kapag muling pinatakbo ang tool gamit ang "--review", ang mga query ay minarkahan bilang nasuri sa
database ay hindi naka-print sa ulat. Itinatampok nito ang mga bagong query na kailangang
nirepaso. Kapag ginamit ang opsyong "--history", ang mga sukatan ng query (oras ng query, oras ng pag-lock,
atbp.) para sa bawat natatanging query ay nai-save sa database. Sa bawat oras na ginagamit ang tool
"--history", mas maraming makasaysayang data ang nai-save na magagamit sa trend at pagsusuri
pagganap ng query sa paglipas ng panahon.

MGA KATANGIAN


Gumagana ang pt-query-digest sa mga kaganapan, na isang koleksyon ng mga pares ng key-value na tinatawag
mga katangian. Makikilala mo kaagad ang karamihan sa mga katangian: "Query_time",
"Lock_time", at iba pa. Maaari ka lamang tumingin sa isang mabagal na log at makita ang mga ito. Gayunpaman, mayroong
ang ilan na wala sa mabagal na log, at mabagal na log ay maaaring aktwal na may kasamang iba't ibang uri
ng mga katangian (halimbawa, maaaring mayroon kang server na may mga patch na Percona).

Tingnan ang "ATTRIBUTES REFERENCE" malapit sa dulo ng dokumentasyong ito para sa isang listahan ng mga karaniwan at
"--type" na mga partikular na katangian. Ang isang pamilyar sa mga katangiang ito ay kinakailangan para sa
nagtatrabaho sa "--filter", "--ignore-attributes", at iba pang mga opsyon na nauugnay sa attribute.

Gamit ang malikhaing paggamit ng "--filter", maaari kang lumikha ng mga bagong katangian na hinango mula sa umiiral na
mga katangian. Halimbawa, upang lumikha ng isang katangian na tinatawag na "Row_ratio" para sa pagsusuri sa
ratio ng "Rows_sent" sa "Rows_examined", tumukoy ng filter tulad ng:

--filter '($event->{Row_ratio} = $event->{Rows_sent} / ($event->{Rows_examined})) && 1'

Ang "&& 1" na trick ay kailangan para gumawa ng wastong one-line syntax na palaging totoo, kahit na
ang pagtatalaga ay nangyayari upang suriin ang mali. Awtomatikong lalabas ang bagong attribute
ang output:

# Row ratio 1.00 0.00 1 0.50 1 0.71 0.50

Ang mga katangiang ginawa sa ganitong paraan ay maaaring tukuyin para sa "--order-by" o anumang opsyon na nangangailangan
isang katangian.

oUTPUT


Ang default na "--output" ay isang ulat ng pagsusuri ng query. Kinokontrol ng opsyong "--[no]ulat".
nakalimbag man o hindi ang ulat na ito. Minsan maaaring gusto mong i-parse ang lahat ng mga query
ngunit sugpuin ang ulat, halimbawa kapag gumagamit ng "--review" o "--history".

Mayroong isang talata para sa bawat klase ng query na nasuri. Ang isang "klase" ng mga query ay mayroon ang lahat
ang parehong halaga para sa attribute na "--group-by" na "fingerprint" bilang default. (Tingnan
"ATTRIBUTES".) Ang fingerprint ay isang abstract na bersyon ng query text na may mga literal
inalis, na-collapse ang whitespace, at iba pa. Naka-format ang ulat kaya madaling gawin
i-paste sa mga email nang hindi binabalot, at lahat ng mga linyang hindi query ay nagsisimula sa isang komento, kaya ikaw
maaaring i-save ito sa isang .sql file at buksan ito sa iyong paboritong syntax-highlighting text editor.
Mayroong profile sa oras ng pagtugon sa simula.

Ang output na inilarawan dito ay kinokontrol ng "--report-format". Pinapayagan ka ng pagpipiliang iyon
tukuyin kung ano ang ipi-print at sa anong pagkakasunud-sunod. Ang default na output sa default na order ay
inilarawan dito.

Ang ulat, bilang default, ay nagsisimula sa isang talata tungkol sa buong pagsusuri na pinapatakbo Ang
ang impormasyon ay halos kapareho sa kung ano ang makikita mo para sa bawat klase ng mga query sa log, ngunit
wala itong ilang impormasyon na masyadong mahal na panatilihin sa buong mundo para sa
pagsusuri. Mayroon din itong ilang istatistika tungkol sa mismong pagpapatupad ng code, gaya ng CPU
at paggamit ng memorya, ang lokal na petsa at oras ng pagtakbo, at isang listahan ng input file
binasa/na-parse.

Kasunod nito ay ang profile sa oras ng pagtugon sa mga kaganapan. Ito ay isang mataas na buod
view ng mga natatanging kaganapan sa detalyadong ulat ng query na kasunod. Ito ay naglalaman ng
sumusunod na mga hanay:

Kahulugan ng Hanay
=========================== ============================ =====================
Ranggo Ang ranggo ng query sa loob ng buong hanay ng mga query na nasuri
Query ID Ang fingerprint ng query
Oras ng pagtugon Ang kabuuang oras ng pagtugon, at porsyento ng kabuuang kabuuan
Mga Tawag Ang dami ng beses na isinagawa ang query na ito
R/Call Ang ibig sabihin ng oras ng pagtugon sa bawat pagpapatupad
V/M Ang Variance-to-mean ratio ng oras ng pagtugon
Item Ang dalisay na query

Ang isang huling linya na ang ranggo ay ipinapakita bilang MISC ay naglalaman ng mga pinagsama-samang istatistika sa mga query na iyon
ay hindi kasama sa ulat, dahil sa mga opsyon gaya ng "--limit" at "--outliers." Para sa
mga detalye sa ratio ng variance-to-mean, pakitingnan
http://en.wikipedia.org/wiki/Index_of_dispersion.

Susunod, ang detalyadong ulat ng query ay naka-print. Ang bawat query ay lilitaw sa isang talata. Heto ang
sample, bahagyang na-reformat upang 'perldoc' ay hindi magbalot ng mga linya sa isang terminal. Ang
Ang mga sumusunod ay magiging isang talata, ngunit hihiwalayin natin ito para sa komentaryo.

# Query 2: 0.01 QPS, 0.02x conc, ID 0xFDEA8D2993C9CAF3 sa byte 160665

Tinutukoy ng linyang ito ang sequential number ng query sa pagkakasunud-sunod na tinukoy ni
"--Iniutos ni". Pagkatapos ay mayroong mga query sa bawat segundo, at ang tinatayang pagkakatugma para sa
ang query na ito (kinakalkula bilang isang function ng timespan at kabuuang Query_time). Kasunod ay meron
isang query ID. Ang ID na ito ay isang hex na bersyon ng checksum ng query sa database, kung ikaw ay
gamit ang "--review". Maaari mong piliin ang mga detalye ng nasuri na query mula sa database na may a
query tulad ng "PUMILI .... WHERE checksum=0xFDEA8D2993C9CAF3".

Kung sinisiyasat mo ang ulat at gusto mong i-print ang bawat sample ng isang partikular
query, kung gayon ang sumusunod na "--filter" ay maaaring makatulong:

pt-query-digest slow.log \
--walang-ulat \
--output slowlog \
--filter '$event->{fingerprint} \
&& make_checksum($event->{fingerprint}) eq "FDEA8D2993C9CAF3"'

Pansinin na dapat mong alisin ang prefix na "0x" sa checksum.

Sa wakas, kung sakaling gusto mong makahanap ng sample ng query sa log file, nandiyan ang byte
offset kung saan ka maaaring tumingin. (Hindi ito palaging tumpak, dahil sa ilang mga anomalya sa
mabagal na format ng log, ngunit kadalasan ito ay tama.) Ang posisyon ay tumutukoy sa pinakamasamang sample, na
makikita natin ang higit pa tungkol sa ibaba.

Susunod ay ang talahanayan ng mga sukatan tungkol sa klase ng mga query na ito.

# pct kabuuang min max avg 95% stddev median
# Bilang 0 2
# Exec time 13 1105s 552s 554s 553s 554s 2s 553s
# Oras ng pag-lock 0 216us 99us 117us 108us 117us 12us 108us
# Mga row na ipinadala 20 6.26M 3.13M 3.13M 3.13M 3.13M 12.73 3.13M
# Rows na pagsusulit 0 6.26M 3.13M 3.13M 3.13M 3.13M 12.73 3.13M

Ang unang linya ay mga header ng hanay para sa talahanayan. Ang porsyento ay ang porsyento ng
kabuuan para sa buong pagtakbo ng pagsusuri, at ang kabuuan ay ang aktwal na halaga ng tinukoy
panukat. Halimbawa, sa kasong ito makikita natin na ang query ay naisakatuparan ng 2 beses, which is
13% ng kabuuang bilang ng mga query sa file. Ang min, max at avg na mga column ay self-
nagpapaliwanag. Ang 95% column ay nagpapakita ng 95th percentile; 95% ng mga halaga ay mas mababa sa o
katumbas ng halagang ito. Ipinapakita sa iyo ng karaniwang paglihis kung gaano kahigpit ang pagkakagrupo ng mga halaga.
Ang standard deviation at median ay parehong kinakalkula mula sa 95th percentile, itinatapon
ang napakalaking halaga.

Ang stddev, median at 95th percentile na istatistika ay tinatayang. Mga eksaktong istatistika
nangangailangan ng pagpapanatiling nakikita ang bawat halaga, pag-uuri, at paggawa ng ilang kalkulasyon sa mga ito. Ito ay gumagamit ng
maraming alaala. Para maiwasan ito, nagtatago kami ng 1000 bucket, bawat isa sa kanila ay 5% na mas malaki kaysa sa isa
dati, mula .000001 hanggang sa napakalaking bilang. Kapag nakakita tayo ng halaga, tumataas tayo
ang balde kung saan ito nahuhulog. Kaya mayroon kaming nakapirming memorya sa bawat klase ng mga query. Ang
Ang kawalan ay ang imprecision, na karaniwang nasa 5 porsyentong hanay.

Susunod na mayroon kaming mga istatistika sa mga gumagamit, database at hanay ng oras para sa query.

# User 1 user1
# Mga Database 2 db1Na (1), db2(1)
# Saklaw ng oras 2008-11-26 04:55:18 hanggang 2008-11-27 00:15:15

Ang mga user at database ay ipinapakita bilang isang bilang ng mga natatanging halaga, na sinusundan ng mga halaga.
Kung mayroon lamang, ito ay ipinapakita nang nag-iisa; kung marami, ipinapakita namin ang bawat isa sa pinakamarami
madalas, na sinusundan ng bilang ng beses na ito ay lilitaw.

# Query_time na pamamahagi
#1 tayo
#10 tayo
#100 tayo
# 1ms
# 10ms ####
# 100ms ####################
# 1s ##########
# 10s+

Ang mga oras ng pagpapatupad ay nagpapakita ng logarithmic chart ng time clustering. Ang bawat query ay napupunta sa isa
ng "mga balde" at binibilang. Ang mga balde ay kapangyarihan ng sampu. Ang unang balde ay
lahat ng value sa "solong microsecond range" -- iyon ay, mas mababa sa 10us. Ang pangalawa ay
"sampu-sampung microseconds," na mula 10us hanggang (ngunit hindi kasama) 100us; at iba pa.
Maaaring baguhin ang naka-chart na katangian sa pamamagitan ng pagtukoy sa "--report-histogram" ngunit limitado sa
mga katangiang nakabatay sa oras.

# Mga mesa
# IPAKITA ANG STATUS NG TABLE KATULAD ng 'table1'\G
# IPAKITA ANG GUMAWA NG TALAAN `table1`\G
# IPALIWANAG
PUMILI * MULA sa talahanayan1\G

Ang seksyong ito ay isang kaginhawaan: kung sinusubukan mong i-optimize ang mga query na nakikita mo sa
mabagal na pag-log, malamang na gusto mong suriin ang istraktura at sukat ng talahanayan. Ito ay mga kopya-at-
paste-ready na mga utos para gawin iyon.

Sa wakas, nakakita kami ng sample ng mga query sa klase ng query na ito. Ito ay hindi random
sample. Ito ang query na gumawa ng pinakamasama, ayon sa pagkakasunud-sunod na ibinigay ni
"--Iniutos ni". Karaniwang makikita mo ang isang nagkomento na "# EXPLAIN" na linya bago ito, kaya ikaw
maaaring kopyahin-i-paste ang query upang suriin ang EXPLAIN plan nito. Ngunit para sa mga hindi SELECT query na
ay hindi posibleng gawin, kaya sinusubukan ng tool na baguhin ang query sa halos katumbas
PUMILI ng query, at idinagdag iyon sa ibaba.

Kung gusto mong mahanap ang sample na kaganapang ito sa log, gamitin ang offset na binanggit sa itaas, at
isang bagay tulad ng sumusunod:

buntot -c + /path/to/file | ulo

Tingnan din ang "--report-format".

TANONG REVIEW


Ang isang query na "--review" ay ang proseso ng pag-iimbak ng lahat ng mga fingerprint ng query na nasuri. Ito
ay may ilang mga benepisyo:

· Maaari kang magdagdag ng metadata sa mga klase ng mga query, tulad ng pagmamarka sa kanila para sa follow-up, pagdaragdag
mga tala sa mga query, o pagmamarka sa kanila ng isang ID ng isyu para sa iyong system sa pagsubaybay sa isyu.

· Maaari kang sumangguni sa mga nakaimbak na halaga sa mga susunod na pagtakbo upang malaman mo kung nagawa mo na
nakakita ng query dati. Makakatulong ito sa iyong bawasan ang mga nadobleng trabaho.

· Maaari kang mag-imbak ng makasaysayang data tulad ng bilang ng hilera, mga oras ng query, at sa pangkalahatan
anumang makikita mo sa ulat.

Upang magamit ang feature na ito, nagpapatakbo ka ng pt-query-digest gamit ang opsyong "--review". Mag-iimbak ito
ang mga fingerprint at iba pang impormasyon sa talahanayan na iyong tinukoy. Sa susunod na patakbuhin mo ito
na may parehong opsyon, gagawin nito ang sumusunod:

· Hindi ito magpapakita sa iyo ng mga query na nasuri mo na. Ang isang query ay itinuturing na
nasuri na kung nagtakda ka ng value para sa column na "reviewed_by". (Kung gusto mo
tingnan ang mga query na nasuri mo na, gamitin ang opsyong "--report-all".)

· Ang mga query na iyong nasuri, at hindi lumalabas sa output, ay magdudulot ng mga gaps sa
query number sequence sa unang linya ng bawat talata. At ang halaga na mayroon ka
na tinukoy para sa "--limit" ay paparangalan pa rin. Kaya kung nasuri mo na ang lahat ng query sa
yung top 10 at hihingi ka ng top 10, wala kang makikita sa output.

· Kung gusto mong makita ang mga query na nasuri mo na, maaari mong tukuyin
"--ulat-lahat". Pagkatapos ay makikita mo ang normal na output ng pagsusuri, ngunit makikita mo rin ang
impormasyon mula sa talahanayan ng pagsusuri, sa ibaba lamang ng graph ng oras ng pagpapatupad. Halimbawa,

# Suriin ang impormasyon
# comments: grabe IN() subquery, ayusin agad!
# unang_nakita: 2008-12-01 11:48:57
# jira_ticket: 1933
# huling_nakita: 2008-12-18 11:49:07
# priority: mataas
# reviewed_by: xaprb
# reviewed_on: 2008-12-18 15:03:11

Kapaki-pakinabang ang metadata na ito dahil, habang sinusuri mo ang iyong mga query, nakukuha mo ang iyong mga komento
isinama mismo sa ulat.

FINGERPRINTS


Ang fingerprint ng query ay ang abstract na anyo ng isang query, na ginagawang posible ang pagpangkat
magkatulad na mga tanong nang magkasama. Ang pag-abstract ng isang query ay nag-aalis ng mga literal na halaga, nag-normalize
whitespace, at iba pa. Halimbawa, isaalang-alang ang dalawang query na ito:

PUMILI ng pangalan, password MULA sa user WHERE id='12823';
piliin ang pangalan, password mula sa user
kung saan id=5;

Pareho sa mga query na iyon ay fingerprint sa

piliin ang pangalan, password mula sa user where id=?

Kapag nalaman na ang fingerprint ng query, maaari na nating pag-usapan ang tungkol sa isang query na parang ito
kumakatawan sa lahat ng magkatulad na query.

Ang ginagawa ng "pt-query-digest" ay kahalintulad sa isang GROUP BY na pahayag sa SQL. (Ngunit tandaan na
Ang "maraming column" ay hindi tumutukoy sa isang multi-column grouping; Tinutukoy nito ang maraming ulat!)
Kung ganito ang hitsura ng iyong command-line,

pt-query-digest \
--group-by fingerprint \
--order-by Query_time:sum \
--limitasyon 10 \
mabagal.log

Ang kaukulang pseudo-SQL ay ganito ang hitsura:

SELECT WORST(query BY Query_time), SUM(Query_time), ...
MULA sa /path/to/slow.log
GROUP BY FINGERPRINT(query)
ORDER BY SUM(Query_time) DESC
LIMIT 10

Maaari mo ring gamitin ang value na "distill", na isang uri ng super-fingerprint. Tingnan mo
"--group-by" para sa higit pa.

Ang query fingerprinting ay tumanggap ng maraming espesyal na kaso, na napatunayang kinakailangan sa
tunay na mundo. Halimbawa, ang isang "IN" na listahan na may 5 literal ay talagang katumbas ng isa na may 4
mga literal, kaya ang mga listahan ng mga literal ay ibinabagsak sa isa. Kung may mahanap ka na
ay hindi na-fingerprint nang maayos, mangyaring magsumite ng ulat ng bug na may maaaring kopyahin na kaso ng pagsubok.

Narito ang isang listahan ng mga pagbabago sa panahon ng fingerprint, na maaaring hindi kumpleto:

· Pagsama-samahin ang lahat ng SELECT query mula sa mysqldump, kahit na magkaiba ang mga ito
mga mesa. Ang parehong naaangkop sa lahat ng mga query mula sa pt-table-checksum.

· Paikliin ang mga multi-value na INSERT na pahayag sa isang solong VALUES() listahan.

· I-strip ang mga komento.

· I-abstract ang mga database sa mga USE statement, kaya lahat ng USE statement ay pinagsama-sama.

· Palitan ang lahat ng literal, tulad ng mga sinipi na string. Para sa kahusayan, ang code na pumapalit
Ang literal na mga numero ay medyo hindi pumipili, at maaaring palitan ang ilang bagay bilang mga numero
kapag hindi naman talaga sila. Ang mga hexadecimal literal ay pinapalitan din. Ang NULL ay itinuturing bilang
isang literal. Ang mga numerong naka-embed sa mga identifier ay pinapalitan din, kaya pinangalanan ang mga talahanayan
katulad na ipi-fingerprint sa parehong mga halaga (hal. users_2009 at users_2010
gagawa ng fingerprint nang magkapareho).

· I-collapse ang lahat ng whitespace sa isang solong espasyo.

· I-lowercase ang buong query.

· Palitan ang lahat ng literal sa loob ng SA() at VALUES() mga listahan na may iisang placeholder,
hindi alintana ang kardinalidad.

· I-collapse ang maramihang magkakaparehong mga query sa UNION sa iisang isa.

Opsyon


Tumatanggap ang tool na ito ng mga karagdagang argumento sa command-line. Sumangguni sa "SYNOPSIS" at paggamit
impormasyon para sa mga detalye.

--magtanong-pasa
Mag-prompt para sa isang password kapag kumokonekta sa MySQL.

--attribute-aliases
uri: array; default: db|Skema

Listahan ng attribute|alias, atbp.

Ang ilang partikular na katangian ay may maraming pangalan, tulad ng db at Schema. Kung ang isang kaganapan ay walang
ang pangunahing katangian, ang pt-query-digest ay naghahanap ng isang alias na katangian. Kung nakahanap ito ng isang
alias, ginagawa nito ang pangunahing katangian na may halaga ng katangian ng alias at inaalis
ang alias attribute.

Kung ang kaganapan ay may pangunahing katangian, ang lahat ng mga katangian ng alias ay tatanggalin.

Nakakatulong ito na pasimplehin ang mga attribute ng event para, halimbawa, walang ulat
mga linya para sa db at Schema.

--attribute-value-limit
uri: int; default: 4294967296

Isang limitasyon sa katinuan para sa mga halaga ng katangian.

Ang pagpipiliang ito ay tumatalakay sa mga bug sa mabagal na pag-andar ng pag-log na nagdudulot ng malalaking halaga para sa
mga katangian. Kung mas malaki ang value ng attribute kaysa dito, ang huling nakitang value para sa
ang klase ng query na iyon ang ginagamit sa halip.

--charset
maikling anyo: -A; uri: string

Default na set ng character. Kung ang value ay utf8, itatakda ang binmode ng Perl sa STDOUT sa utf8,
ipinapasa ang mysql_enable_utf8 na opsyon sa DBD::mysql, at pinapatakbo ang SET NAMES UTF8 pagkatapos
pagkonekta sa MySQL. Ang anumang iba pang value ay nagtatakda ng binmode sa STDOUT nang walang utf8 layer,
at nagpapatakbo ng SET NAMES pagkatapos kumonekta sa MySQL.

--config
uri: Array

Basahin itong listahan na pinaghihiwalay ng kuwit ng mga config file; kung tinukoy, ito dapat ang una
opsyon sa command line.

--[no] continue-on-error
default: oo

Ipagpatuloy ang pag-parse kahit na may error. Ang tool ay hindi magpapatuloy magpakailanman: ito
hihinto kapag ang anumang proseso ay nagdudulot ng 100 mga error, kung saan malamang na mayroong isang bug sa
tool o ang input ay hindi wasto.

--[no]create-history-table
default: oo

Lumikha ng talahanayan ng "--history" kung wala ito.

Ang pagpipiliang ito ay nagiging sanhi ng talahanayan na tinukoy ng "--history" upang malikha gamit ang default
istraktura na ipinapakita sa dokumentasyon para sa "--history".

--[no]create-review-table
default: oo

Lumikha ng talahanayan na "--review" kung wala ito.

Ang pagpipiliang ito ay nagiging sanhi ng talahanayan na tinukoy ng "--review" na malikha gamit ang default
istraktura na ipinapakita sa dokumentasyon para sa "--review".

--demonyo
Fork sa background at tanggalin mula sa shell. POSIX operating system lang.

--database
maikling anyo: -D; uri: string

Kumonekta sa database na ito.

--defaults-file
maikling anyo: -F; uri: string

Basahin lamang ang mga pagpipilian sa mysql mula sa ibinigay na file. Dapat kang magbigay ng ganap na pathname.

--embedded-attributes
uri: array

Dalawang Perl regex pattern para makuha ang mga pseudo-attribute na naka-embed sa mga query.

Ang mga naka-embed na attribute ay maaaring mga espesyal na attribute-value pairs kung saan ka nakatago
mga komento. Ang unang regex ay dapat tumugma sa buong hanay ng mga katangian (kung sakaling mayroong
ay maramihan). Ang pangalawang regex ay dapat tumugma at kumuha ng mga pares ng attribute-value mula sa
ang unang regex.

Halimbawa, ipagpalagay na ang iyong query ay ganito ang hitsura:

PUMILI * mula sa mga gumagamit -- file: /login.php, linya: 493;

Maaari kang magpatakbo ng pt-query-digest gamit ang sumusunod na opsyon:

pt-query-digest --embedded-attributes ' -- .*','(\w+): ([^\,]+)'

Kinukuha ng unang regular na expression ang buong komento:

" -- file: /login.php, linya: 493;"

Hinahati ito ng pangalawa sa mga pares ng attribute-value at idinaragdag ang mga ito sa kaganapan:

VALUE NG ATTRIBUTE
========= ==========
file /login.php
line 493

NOTA: Ang lahat ng kuwit sa mga pattern ng regex ay dapat na i-escape gamit ang \ kung hindi man ang pattern
masisira.

--inaasahang-saklaw
uri: array; default: 5,10

Ipaliwanag ang mga aytem kapag marami o mas kaunti kaysa sa inaasahan.

Tinutukoy ang bilang ng mga item na inaasahang makikita sa ulat na ibinigay ng "--[no]ulat",
bilang kontrolado ng "--limit" at "--outliers". Kung mayroong higit o mas kaunting mga item sa
ulat, ipapaliwanag ng bawat isa kung bakit ito isinama.

--ipaliwanag
uri: DSN

Patakbuhin ang EXPLAIN para sa sample na query sa DSN na ito at mag-print ng mga resulta.

Gumagana lang ito kapag ang "--group-by" ay may kasamang fingerprint. Nagdudulot ito ng pt-query-digest sa
patakbuhin ang EXPLAIN at isama ang output sa ulat. Para sa kaligtasan, lumalabas ang mga query
ang magkaroon ng subquery na ipapatupad ng EXPLAIN ay hindi ipapaliwanag. Karaniwan ang mga iyon
"derived table" na mga query ng form

piliin ... mula sa ( piliin .... ) der;

Ang mga resulta ng EXPLAIN ay naka-print bilang isang buong vertical na format sa ulat ng kaganapan, na
lilitaw sa dulo ng bawat ulat ng kaganapan sa patayong istilo ("\G") tulad ng MySQL
nagpi-print nito.

--filter
uri: string

Itapon ang mga kaganapan kung saan ang Perl code na ito ay hindi nagbabalik ng totoo.

Ang pagpipiliang ito ay isang string ng Perl code o isang file na naglalaman ng Perl code na naipon
sa isang subroutine na may isang argumento: $event. Ito ay isang hashref. Kung ang ibinigay na halaga
ay isang nababasang file, pagkatapos ay binabasa ng pt-query-digest ang buong file at ginagamit ang mga nilalaman nito
bilang code. Ang file ay hindi dapat maglaman ng shebang (#!/usr/bin/perl) linya.

Kung ang code ay bumalik na true, ang chain ng mga callback ay magpapatuloy; kung hindi ay matatapos na. Ang
ang code ay ang huling pahayag sa subroutine maliban sa "return $event". Ang
subroutine na template ay:

sub { $event = shift; i-filter && ibalik ang $event; }

Ang mga filter na ibinigay sa command line ay nakabalot sa loob ng mga panaklong tulad ng "( filter
)". Para sa mga kumplikado, multi-line na mga filter, dapat mong ilagay ang code sa loob ng isang file upang ito ay
hindi balot sa loob ng panaklong. Sa alinmang paraan, ang filter ay dapat gumawa ng syntactically
wastong code na ibinigay sa template. Halimbawa, isang if-else branch na ibinigay sa command
hindi magiging wasto ang linya:

--filter 'if () { } else { }' # WRONG

Dahil ito ay ibinigay sa command line, ang if-else branch ay balot sa loob
panaklong na hindi wasto ayon sa sintaks. Kaya upang makamit ang isang bagay na mas kumplikado
tulad nito ay mangangailangan ng paglalagay ng code sa isang file, halimbawa filter.txt:

aking $event_ok; kung (...) { $event_ok=1; } iba { $event_ok=0; } $event_ok

Pagkatapos ay tukuyin ang "--filter filter.txt" para basahin ang code mula sa filter.txt.

Kung hindi mag-compile ang filter code, ang pt-query-digest ay mamamatay nang may error. Kung ang
nag-compile ang filter code, maaaring magkaroon pa rin ng error sa runtime kung susubukan ng code na gawin
may mali (tulad ng pattern na tumutugma sa isang hindi natukoy na halaga). Ang pt-query-digest ay hindi
magbigay ng anumang mga pananggalang kaya mag-code nang maingat!

Isang halimbawang filter na nagtatapon ng lahat maliban sa mga SELECT statement:

--filter '$event->{arg} =~ m/^select/i'

Ito ay pinagsama-sama sa isang subroutine tulad ng sumusunod:

sub { $event = shift; ( $event->{arg} =~ m/^select/i ) && ibalik ang $event; }

Pinahihintulutan ang code na magkaroon ng mga side effect (upang baguhin ang $event).

Tingnan ang "ATTRIBUTES REFERENCE" para sa isang listahan ng mga karaniwang at "--type" na partikular na attribute.

Narito ang higit pang mga halimbawa ng filter code:

Ang host/IP ay tumutugma sa domain.com
--filter '($event->{host} || $event->{ip} || "") =~ m/domain.com/'

Minsan nai-log ng MySQL ang host kung saan inaasahan ang IP. Samakatuwid, sinusuri namin pareho.

Ang user ay tumutugma kay john
--filter '($event->{user} || "") =~ m/john/'

Higit sa 1 babala
--filter '($event->{Warning_count} || 0) > 1'

Ginagawa ng query ang full table scan o full join
--filter '(($event->{Full_scan} || "") eq "Yes") || (($event->{Full_join} || "")
eq "Oo")'

Hindi naihatid ang query mula sa cache ng query
--filter '($event->{QC_Hit} || "") eq "No"'

Ang query ay 1 MB o mas malaki
--filter '$event->{bytes} >= 1_048_576'

Dahil pinapayagan ka ng "--filter" na baguhin ang $event, magagamit mo ito para gumawa ng iba pang bagay, tulad ng
lumikha ng mga bagong katangian. Tingnan ang "ATTRIBUTES" para sa isang halimbawa.

--group-by
uri: Array; default: fingerprint

Aling katangian ng mga kaganapan ang ipangkat ayon sa.

Sa pangkalahatan, maaari mong ipangkat ang mga query sa mga klase batay sa anumang katangian ng query,
gaya ng "user" o "db", na sa pamamagitan ng default ay magpapakita sa iyo kung aling mga user at kung aling mga database
makuha ang pinakamaraming "Query_time". Ang default na katangian, "fingerprint", mga pangkat na magkatulad,
mga abstract na query sa mga klase; tingnan sa ibaba at tingnan din ang "FINGERPRINTS".

Ang isang ulat ay naka-print para sa bawat "--group-by" na halaga (maliban kung ang "--no-report" ay ibinigay).
Samakatuwid, ang ibig sabihin ng "--group-by user,db" ay "ulat sa mga query na may parehong user at ulat
sa mga query na may parehong db"; hindi ito nangangahulugang "ulat sa mga query na may parehong user
at db." Tingnan din ang "OUTPUT".

Ang bawat value ay dapat may katumbas na value sa parehong posisyon sa "--order-by".
Gayunpaman, ang pagdaragdag ng mga halaga sa "--group-by" ay awtomatikong magdagdag ng mga halaga sa "--order-by",
para sa iyong kaginhawahan.

Mayroong ilang mga mahiwagang halaga na nagdudulot ng ilang karagdagang pagmimina ng data bago mangyari
nagaganap ang pagpapangkat:

bakas ng daliri
Nagiging sanhi ito ng mga kaganapan na ma-fingerprint sa abstract na mga query sa isang canonical form,
na pagkatapos ay ginagamit upang pangkatin ang mga kaganapan sa isang klase. Tingnan ang "FINGERPRINTS" para sa
higit pa tungkol sa fingerprinting.

tables
Nagdudulot ito ng pagsisiyasat ng mga kaganapan para sa kung ano ang tila mga talahanayan, at pagkatapos
pinagsama-sama niyan. Tandaan na ang isang query na naglalaman ng dalawa o higit pang mga talahanayan ay magiging
binibilang nang maraming beses hangga't mayroong mga talahanayan; kaya ang isang pagsanib laban sa dalawang talahanayan ay mabibilang
ang Query_time laban sa parehong mga talahanayan.

maglinis
Ito ay isang uri ng super-fingerprint na nagko-collapse ng mga query sa isang mungkahi
sa kanilang ginagawa, gaya ng "INSERT SELECT table1 table2".

- Tumulong
Ipakita ang tulong at lumabas.

--kasaysayan
uri: DSN

I-save ang mga sukatan para sa bawat klase ng query sa ibinigay na talahanayan. Ang pt-query-digest ay nagse-save ng query
mga sukatan (oras ng query, oras ng pag-lock, atbp.) sa talahanayang ito upang makita mo kung paano nagkakaklase ang mga query
magbago sa paglipas ng panahon.

Ang default na talahanayan ay "percona_schema.query_history". Tukuyin ang database (D) at talahanayan
(t) mga opsyon ng DSN para i-override ang default. Ang database at talahanayan ay awtomatikong
nilikha maliban kung ang "--no-create-history-table" ay tinukoy (tingnan
"--[no]create-history-table").

Sinusuri ng pt-query-digest ang mga column sa talahanayan. Ang talahanayan ay dapat magkaroon ng hindi bababa sa
sumusunod na mga hanay:

GUMAWA NG TABLE query_review_history (
checksum BIGINT UNSIGNED NOT NULL,
sample TEXT NOT NULL
);

Sinusuri ang anumang mga column na hindi nabanggit sa itaas upang makita kung sumusunod ang mga ito sa isang partikular na pagpapangalan
kumbensiyon. Espesyal ang column kung ang pangalan ay nagtatapos sa isang underscore na sinusundan ng anuman
ng mga halagang ito:

pct|avg|cnt|sum|min|max|pct_95|stddev|median|ranggo

Kung ang column ay nagtatapos sa isa sa mga value na iyon, ang prefix ay binibigyang-kahulugan bilang ang
attribute ng event na iimbak sa column na iyon, at ang suffix ay binibigyang-kahulugan bilang sukatan
na maiimbak. Halimbawa, ang isang column na pinangalanang "Query_time_min" ay gagamitin upang iimbak ang
minimum na "Query_time" para sa klase ng mga kaganapan.

Ang talahanayan ay dapat ding magkaroon ng pangunahing susi, ngunit nasa iyo iyon, depende sa kung paano mo
gustong mag-imbak ng makasaysayang data. Iminumungkahi naming magdagdag ng ts_min at ts_max na mga column at
ginagawa silang bahagi ng pangunahing susi kasama ang checksum. Ngunit maaari mo ring lamang
magdagdag ng column na ts_min at gawin itong uri ng DATE, para makakuha ka ng isang row sa bawat klase ng mga query
kada araw.

Ang sumusunod na kahulugan ng talahanayan ay ginagamit para sa "--[no]create-history-table":

GUMAWA NG TALAAN KUNG WALA NA query_history (
checksum BIGINT UNSIGNED NOT NULL,
sample TEXT NOT NULL,
ts_min DATETIME,
ts_max DATETIME,
ts_cnt FLOAT,
Query_time_sum FLOAT,
Query_time_min FLOAT,
Query_time_max FLOAT,
Query_time_pct_95 FLOAT,
Query_time_stddev FLOAT,
Query_time_median FLOAT,
Lock_time_sum FLOAT,
Lock_time_min FLOAT,
Lock_time_max na FLOAT,
Lock_time_pct_95 FLOAT,
Lock_time_stddev FLOAT,
Lock_time_median FLOAT,
Rows_sent_sum FLOAT,
Rows_sent_min FLOAT,
Rows_sent_max FLOAT,
Rows_sent_pct_95 FLOAT,
Rows_sent_stddev FLOAT,
Rows_sent_median FLOAT,
Rows_examined_sum FLOAT,
Rows_examined_min FLOAT,
Rows_examined_max FLOAT,
Rows_examined_pct_95 FLOAT,
Rows_examined_stddev FLOAT,
Rows_examined_median FLOAT,
-- Pinahaba ng Percona ang mga katangian ng slowlog
-- http://www.percona.com/docs/wiki/patches:slow_extended
Rows_affected_sum FLOAT,
Rows_affected_min FLOAT,
Rows_affected_max FLOAT,
Rows_affected_pct_95 FLOAT,
Rows_affected_stddev FLOAT,
Rows_affected_median FLOAT,
Rows_read_sum FLOAT,
Rows_read_min FLOAT,
Rows_read_max FLOAT,
Rows_read_pct_95 FLOAT,
Rows_read_stddev FLOAT,
Rows_read_median FLOAT,
Merge_passes_sum FLOAT,
Merge_passes_min FLOAT,
Pagsamahin ang_passes_max na FLOAT,
Merge_passes_pct_95 FLOAT,
Merge_passes_stddev FLOAT,
Merge_passes_median FLOAT,
InnoDB_IO_r_ops_min FLOAT,
InnoDB_IO_r_ops_max FLOAT,
InnoDB_IO_r_ops_pct_95 FLOAT,
InnoDB_IO_r_ops_stddev FLOAT,
InnoDB_IO_r_ops_median FLOAT,
InnoDB_IO_r_bytes_min FLOAT,
InnoDB_IO_r_bytes_max FLOAT,
InnoDB_IO_r_bytes_pct_95 FLOAT,
InnoDB_IO_r_bytes_stddev FLOAT,
InnoDB_IO_r_bytes_median FLOAT,
InnoDB_IO_r_wait_min FLOAT,
InnoDB_IO_r_wait_max FLOAT,
InnoDB_IO_r_wait_pct_95 FLOAT,
InnoDB_IO_r_wait_stddev FLOAT,
InnoDB_IO_r_wait_median FLOAT,
InnoDB_rec_lock_wait_min FLOAT,
InnoDB_rec_lock_wait_max FLOAT,
InnoDB_rec_lock_wait_pct_95 FLOAT,
InnoDB_rec_lock_wait_stddev FLOAT,
InnoDB_rec_lock_wait_median FLOAT,
InnoDB_queue_wait_min FLOAT,
InnoDB_queue_wait_max FLOAT,
InnoDB_queue_wait_pct_95 FLOAT,
InnoDB_queue_wait_stddev FLOAT,
InnoDB_queue_wait_median FLOAT,
InnoDB_pages_distinct_min FLOAT,
InnoDB_pages_distinct_max FLOAT,
InnoDB_pages_distinct_pct_95 FLOAT,
InnoDB_pages_distinct_stddev FLOAT,
InnoDB_pages_distinct_median FLOAT,
-- Mga katangian ng Boolean (Oo/Hindi). Cnt at sum lang ang kailangan
-- Para dito. Ang cnt ay kung gaano karaming beses naitala ang katangian,
-- at ang kabuuan ay kung ilang beses ang halaga ay Oo. Kaya
-- sum/cnt * 100 ay katumbas ng porsyento ng mga naitalang beses na iyon
-- ang halaga ay Oo.
QC_Hit_cnt FLOAT,
QC_Hit_sum FLOAT,
Full_scan_cnt FLOAT,
Full_scan_sum FLOAT,
Full_join_cnt FLOAT,
Full_join_sum FLOAT,
Tmp_table_cnt FLOAT,
Tmp_table_sum FLOAT,
Tmp_table_on_disk_cnt FLOAT,
Tmp_table_on_disk_sum FLOAT,
Filesort_cnt FLOAT,
Filesort_sum FLOAT,
Filesort_on_disk_cnt FLOAT,
Filesort_on_disk_sum FLOAT,
PANGUNAHING SUSI(checksum, ts_min, ts_max)
);

Tandaan na iniimbak namin ang bilang (cnt) para sa katangiang ts lamang; ito ay magiging kalabisan sa
iimbak ito para sa iba pang mga katangian.

--host
maikling anyo: -h; uri: string

Kumonekta sa host.

--ignore-attributes
uri: array; default: arg, cmd, insert_id, ip, port, Thread_id, timestamp, exptime,
mga flag, susi, res, val, server_id, offset, end_log_pos, Xid

Huwag pagsama-samahin ang mga katangiang ito. Ang ilang mga katangian ay hindi mga sukatan ng query ngunit metadata
na hindi kailangang (o hindi maaaring) pinagsama-sama.

--magmana ng mga katangian
uri: array; default: db,ts

Kung nawawala, mamana ang mga katangiang ito mula sa huling kaganapang nagkaroon ng mga ito.

Itinatakda ng opsyong ito kung aling mga katangian ang minana o dinadala sa mga kaganapang nagagawa
wala sila. Halimbawa, kung ang isang kaganapan ay may db attribute na katumbas ng "foo", ngunit ang
Ang susunod na kaganapan ay walang db attribute, pagkatapos ay namamana ito ng "foo" para sa db attribute nito.

--pagitan
uri: lumutang; default: .1

Gaano kadalas i-poll ang processlist, sa ilang segundo.

--mga pag-ulit
uri: int; default: 1

Gaano karaming beses na umulit sa cycle ng collect-and-report. Kung 0, ulitin sa
kawalang-hanggan. Ang bawat pag-ulit ay tumatakbo para sa "--run-time" na tagal ng oras. Ang isang pag-ulit ay
karaniwang tinutukoy ng tagal ng oras at ang isang ulat ay inilimbag kapag ang halagang iyon ng
lumilipas ang oras. Gamit ang "--run-time-mode" "interval", ang isang pagitan ay sa halip ay tinutukoy ng
ang pagitan ng oras na iyong tinukoy sa "--run-time". Tingnan ang "--run-time" at
"--run-time-mode" para sa higit pang impormasyon.

--limitasyon
uri: Array; default: 95%:20

Limitahan ang output sa ibinigay na porsyento o bilang.

Kung ang argument ay isang integer, iulat lamang ang nangungunang N pinakamasamang query. Kung ang argumento
ay isang integer na sinusundan ng "%" sign, iulat ang porsyento ng pinakamasamang query.
Kung ang porsyento ay sinusundan ng isang colon at isa pang integer, iulat ang itaas
porsyento o ang numerong tinukoy ng integer na iyon, alinman ang mauna.

Ang halaga ay talagang isang hanay ng mga halaga na pinaghihiwalay ng kuwit, isa para sa bawat item sa
"--group-by". Kung hindi ka tumukoy ng halaga para sa alinman sa mga item na iyon, ang default ay ang
nangungunang 95%.

Tingnan din ang "--outliers".

--log
uri: string

I-print ang lahat ng output sa file na ito kapag na-demonize.

--Iniutos ni
uri: Array; default: Query_time:sum

Pagbukud-bukurin ang mga kaganapan ayon sa katangiang ito at pinagsama-samang function.

Ito ay isang listahan na pinaghihiwalay ng kuwit ng pagkakasunud-sunod ayon sa mga expression, isa para sa bawat "--group-by"
katangian. Ang default na "Query_time:sum" ay ginagamit para sa "--group-by" na mga attribute na wala
tahasang ibinigay na mga katangiang "--order-by" (iyon ay, kung tutukuyin mo ang higit pang "--group-by"
mga katangian kaysa sa katumbas na "--order-by" na mga katangian). Ang syntax ay
"attribute:aggregate". Tingnan ang "ATTRIBUTES" para sa mga wastong attribute. Ang mga wastong pinagsama-samang ay:

Pinagsama-samang Kahulugan
======================== =============================
kabuuan Sum/kabuuang halaga ng katangian
min Pinakamababang halaga ng katangian
max Maximum na halaga ng attribute
cnt Dalas/bilang ng query

Halimbawa, ang default na "Query_time:sum" ay nangangahulugan na ang mga query sa query analysis
Ang ulat ay iuutos (pagbubukod-bukod) ayon sa kanilang kabuuang oras ng pagpapatupad ng query ("Oras ng Exec").
Ang "Query_time:max" ay nag-order ng mga query ayon sa kanilang maximum na oras ng pagpapatupad ng query, kaya ang
Ang query na may pinakamalaking "Query_time" ang mauuna sa listahan. Ang "cnt" ay higit na tumutukoy sa
ang dalas ng query sa kabuuan, gaano kadalas ito lumilitaw; "Bibilang" nito
kaukulang linya sa ulat ng pagsusuri ng query. Kaya ang anumang katangian at "cnt" ay dapat
magbunga ng parehong ulat kung saan ang mga query ay pinagbubukod-bukod ayon sa dami ng beses na lumilitaw ang mga ito.

Kapag nag-parse ng mga pangkalahatang log ("--type" "genlog"), ang default na "--order-by" ay nagiging
"Query_time:cnt". Ang mga pangkalahatang log ay hindi nag-uulat ng mga oras ng query kaya ang pinagsama-samang "cnt" lamang
makatuwiran dahil ang lahat ng oras ng query ay zero.

Kung tumukoy ka ng isang katangian na hindi umiiral sa mga kaganapan, pagkatapos ay pt-query-digest
bumabalik sa default na "Query_time:sum" at nagpi-print ng notice sa simula ng
ulat para sa bawat klase ng query. Maaari kang lumikha ng mga katangian na may "--filter" at pagkakasunud-sunod ayon sa
sila; tingnan ang "ATTRIBUTES" para sa isang halimbawa.

--outliers
uri: array; default: Query_time:1:10

Mag-ulat ng mga outlier ayon sa attribute:percentile:count.

Ang syntax ng opsyong ito ay isang comma-separated list ng colon-delimited strings. Ang
ang unang field ay ang katangian kung saan tinukoy ang isang outlier. Ang pangalawa ay isang numero
iyon ay inihambing sa 95th percentile ng attribute. Ang pangatlo ay opsyonal, at ay
kumpara sa cnt aggregate ng attribute. Ang mga query na pumasa sa pagtutukoy na ito ay
idinagdag sa ulat, anuman ang anumang limitasyon na iyong tinukoy sa "--limit".

Halimbawa, upang mag-ulat ng mga query na ang 95th percentile na Query_time ay hindi bababa sa 60 segundo
at kung saan ay makikita ng hindi bababa sa 5 beses, gamitin ang sumusunod na argumento:

--outliers Query_time:60:5

Maaari kang tumukoy ng isang --outliers na opsyon para sa bawat value sa "--group-by".

--output
uri: string; default: ulat

Paano i-format at i-print ang mga resulta ng pagsusuri ng query. Ang mga tinatanggap na halaga ay:

VALUE FORMAT
====================== ===============================
ulat Karaniwang ulat ng pagsusuri ng query
slowlog MySQL mabagal na log
json JSON, sa array bawat query class
json-anon JSON nang walang mga halimbawang query

Maaaring hindi paganahin ang buong output ng "ulat" sa pamamagitan ng pagtukoy sa "--no-report" (tingnan
"--[no]ulat"), at ang mga seksyon nito ay maaaring hindi paganahin o muling ayusin sa pamamagitan ng pagtukoy
"--report-format".

Ang "json" na output ay ipinakilala sa 2.2.1 at nasa pagbuo pa rin, kaya ang data
maaaring magbago ang istraktura sa mga susunod na bersyon.

--password
maikling anyo: -p; uri: string

Password na gagamitin kapag kumokonekta. Kung ang password ay naglalaman ng mga kuwit, dapat silang i-escape
na may backslash: "exam\,ple"

--pid
uri: string

Lumikha ng ibinigay na PID file. Hindi magsisimula ang tool kung mayroon nang PID file at
iba ang PID na nilalaman nito kaysa sa kasalukuyang PID. Gayunpaman, kung ang PID file
umiiral at ang PID na nilalaman nito ay hindi na tumatakbo, ang tool ay magpapatungan sa PID
file na may kasalukuyang PID. Awtomatikong tinanggal ang PID file kapag lumabas ang tool.

--port
maikling anyo: -P; uri: int

Port number na gagamitin para sa koneksyon.

--processlist
uri: DSN

I-poll ang processlist ng DSN na ito para sa mga query, na may "--interval" na pagtulog sa pagitan.

Kung nabigo ang koneksyon, susubukan ng pt-query-digest na muling buksan ito nang isang beses bawat segundo.

--pag-unlad
uri: array; default: oras,30

Mag-print ng mga ulat sa pag-unlad sa STDERR. Ang halaga ay isang listahang pinaghihiwalay ng kuwit na may dalawang bahagi.
Ang unang bahagi ay maaaring porsyento, oras, o mga pag-ulit; ang ikalawang bahagi ay tumutukoy kung paano
kadalasan ang isang update ay dapat na naka-print, sa porsyento, mga segundo, o bilang ng mga pag-ulit.

--read-timeout
uri: oras; default: 0

Maghintay ng ganito katagal para sa isang kaganapan mula sa input; 0 na maghintay magpakailanman.

Ang pagpipiliang ito ay nagtatakda ng maximum na oras upang maghintay para sa isang kaganapan mula sa input. Nalalapat ito sa
lahat ng uri ng input maliban sa "--processlist". Kung ang isang kaganapan ay hindi natanggap pagkatapos ng
tinukoy na oras, ihihinto ng script ang pagbabasa ng input at ini-print ang mga ulat nito. Kung
Ang "--iteration" ay 0 o mas malaki sa 1, magsisimula ang susunod na pag-ulit, kung hindi ang script
lalabas.

Ang pagpipiliang ito ay nangangailangan ng Perl POSIX module.

--[walang]ulat
default: oo

Mag-print ng mga ulat sa pagsusuri ng query para sa bawat attribute na "--group-by". Ito ang pamantayan
mabagal na pag-andar ng pagsusuri ng log. Tingnan ang "OUTPUT" para sa paglalarawan kung ano ang ginagawa nito
at kung ano ang hitsura ng mga resulta.

Kung hindi mo kailangan ng ulat (halimbawa, kapag gumagamit ng "--review" o "--history"), ito ay
pinakamahusay na tukuyin ang "--no-report" dahil pinapayagan nito ang tool na laktawan ang ilang mahal
operasyon.

--ulat-lahat
Iulat ang lahat ng mga query, kahit na ang mga na-review na. Nakakaapekto lamang ito sa "ulat"
"--output" kapag gumagamit ng "--review". Kung hindi, ang lahat ng mga query ay palaging naka-print.

--ulat-format
uri: Array; default: rusage, petsa, hostname, mga file, header, profile, query_report, inihanda

I-print ang mga seksyong ito ng ulat ng pagsusuri ng query.

SEKSYON PRINTS
=========================== ============================ =================
rusage CPU times at paggamit ng memory na iniulat ng ps
petsa Kasalukuyang lokal na petsa at oras
hostname Hostname ng makina kung saan pinapatakbo ang pt-query-digest
mga file I-input ang mga file na nabasa/na-parse
header Buod ng buong pagsusuri na tumakbo
profile Compact na talahanayan ng mga query para sa pangkalahatang-ideya ng ulat
query_report Detalyadong impormasyon tungkol sa bawat natatanging query
inihanda Inihanda ang mga pahayag

Ang mga seksyon ay naka-print sa pagkakasunud-sunod na tinukoy. Ang rusage, petsa, mga file at header
ang mga seksyon ay pinagsama-sama kung tinukoy nang magkasama; ang ibang mga seksyon ay pinaghihiwalay ng
mga blangkong linya.

Tingnan ang "OUTPUT" para sa higit pang impormasyon sa iba't ibang bahagi ng ulat ng query.

--ulat-histogram
uri: string; default: Query_time

I-chart ang distribusyon ng mga value ng attribute na ito.

Ang tsart ng pamamahagi ay limitado sa mga katangiang nakabatay sa oras, kaya ang pag-chart
Ang "Rows_examined", halimbawa, ay gagawa ng walang kwentang tsart. Ang mga tsart ay ganito ang hitsura:

# Query_time na pamamahagi
#1 tayo
#10 tayo
#100 tayo
# 1ms
# 10ms ############################
# 100ms ################################################## ########
# 1s ########
# 10s+

Tingnan ang "OUTPUT" para sa higit pang impormasyon.

--ipagpatuloy
uri: string

Kung tinukoy, isusulat ng tool ang huling file offset, kung mayroon, sa ibinigay
filename. Kapag tumakbong muli na may parehong halaga para sa opsyong ito, babasahin ng tool ang huli
na-offset ang file mula sa file, hinahanap ang posisyong iyon sa log, at ipinagpatuloy ang pag-parse
mga kaganapan mula sa puntong iyon.

--pagsusuri
uri: DSN

I-save ang mga klase ng query para sa pagsusuri sa ibang pagkakataon, at huwag mag-ulat ng mga nasuri nang klase.

Ang default na talahanayan ay "percona_schema.query_review". Tukuyin ang database (D) at talahanayan
(t) mga opsyon ng DSN para i-override ang default. Ang database at talahanayan ay awtomatikong
nilikha maliban kung ang "--no-create-review-table" ay tinukoy (tingnan
"--[no]create-review-table").

Kung ang talahanayan ay ginawa nang manu-mano, dapat itong magkaroon ng hindi bababa sa mga sumusunod na column. Ikaw
maaaring magdagdag ng higit pang mga column para sa iyong sariling mga espesyal na layunin, ngunit hindi sila gagamitin ng pt-
query-digest.

GUMAWA NG TALAAN KUNG WALA NA query_review (
checksum BIGINT UNSIGNED NOT NULL PRIMARY KEY,
fingerprint TEXT HINDI NULL,
sample TEXT NOT NULL,
unang_nakita noong DATETIME,
huling_nakita noong DATETIME,
sinuri_ni VARCHARNa (20),
nirepaso_noong DATETIME,
komento TEXT
)

Ang mga column ay:

KAHULUGAN NG HANAY
====================================== =============
checksum Isang 64-bit na checksum ng fingerprint ng query
fingerprint Ang abstract na bersyon ng query; pangunahing susi nito
sample Ang teksto ng query ng isang sample ng klase ng mga query
first_seen Ang pinakamaliit na timestamp ng klase ng mga query na ito
last_seen Ang pinakamalaking timestamp ng klase ng mga query na ito
reviewed_by Initially NULL; kung nakatakda, nilaktawan ang query pagkatapos noon
reviewed_on Sa una NULL; hindi binigyan ng anumang espesyal na kahulugan
mga komento sa una NULL; hindi binigyan ng anumang espesyal na kahulugan

Tandaan na ang column na "fingerprint" ay ang tunay na pangunahing key para sa isang klase ng mga query.
Ang "checksum" ay isa lamang cryptographic na hash ng value na ito, na nagbibigay ng mas maikli
halaga na malamang na natatangi din.

Pagkatapos ng pag-parse at pagsasama-sama ng mga kaganapan, ang iyong talahanayan ay dapat maglaman ng isang row para sa bawat isa
fingerprint. Nakadepende ang opsyong ito sa "--group-by fingerprint" (na siyang default).
Hindi ito gagana kung hindi man.

--run-time
uri: oras

Gaano katagal tatakbo para sa bawat "--iteration". Ang default ay tumakbo magpakailanman (magagawa mo
matakpan gamit ang CTRL-C). Dahil ang "--iteration" ay nagde-default sa 1, kung tutukuyin mo lang
Ang "--run-time", pt-query-digest ay tumatakbo para sa ganoong tagal ng oras at pagkatapos ay lalabas. Ang dalawa
ang mga opsyon ay tinukoy nang magkasama upang gawin ang mga cycle ng collect-and-report. Halimbawa,
tumutukoy sa "--iteration" 4 "--run-time" "15m" na may tuluy-tuloy na input (tulad ng STDIN o
Ang "--processlist") ay magiging sanhi ng pt-query-digest na tumakbo sa loob ng 1 oras (15 minuto x 4),
pag-uulat ng apat na beses, isang beses sa bawat 15 minutong pagitan.

--run-time-mode
uri: string; default: orasan

Itakda kung saan gumagana ang halaga ng "--run-time." Ang mga sumusunod ay ang mga posibleng halaga para sa
pagpipiliang ito:

orasan
Tinutukoy ng "--run-time" ang dami ng totoong oras ng orasan kung saan dapat ang tool
tumakbo para sa bawat "--iteration".

pangyayari
Tinutukoy ng "--run-time" ang dami ng oras ng pag-log. Ang oras ng pag-log ay tinutukoy ng
mga timestamp sa log. Ang unang timestamp na nakita ay naaalala, at ang bawat timestamp
pagkatapos nito ay inihambing sa una upang matukoy kung gaano karaming oras ng pag-log ang lumipas.
Halimbawa, kung ang unang timestamp na nakita ay "12:00:00" at ang susunod ay "12:01:30",
iyon ay 1 minuto at 30 segundo ng oras ng pag-log. Babasahin ng tool ang mga kaganapan hanggang sa
Ang oras ng pag-log ay mas malaki kaysa o katumbas ng tinukoy na "--run-time" na halaga.

Dahil ang mga timestamp sa mga log ay hindi palaging naka-print, o hindi palaging naka-print nang madalas,
ang mode na ito ay nag-iiba sa katumpakan.

agwat
Tinutukoy ng "--run-time" ang mga hangganan ng pagitan ng oras ng pag-log kung saan ang mga kaganapan
hinati at nabuo ang mga ulat. Ang mode na ito ay iba sa iba dahil
hindi nito tinukoy kung gaano katagal tatakbo. Ang halaga ng "--run-time" ay dapat na isang pagitan
na pantay na nahahati sa minuto, oras o araw. Halimbawa, ang "5m" ay nahahati nang pantay-pantay
sa mga oras (60/5=12, kaya 12 5 minuto ang pagitan bawat oras) ngunit ang "7m" ay hindi
(60/7=8.6).

Ang pagtukoy sa "--run-time-mode interval --run-time 30m --iteration 0" ay katulad ng
tumutukoy sa "--run-time-mode clock --run-time 30m --iterations 0". Sa huli
kaso, ang pt-query-digest ay tatakbo magpakailanman, na gumagawa ng mga ulat tuwing 30 minuto, ngunit
epektibo lang itong gumagana sa mga tuluy-tuloy na input tulad ng STDIN at ang
listahan ng proseso. Para sa mga nakapirming input, tulad ng mga log file, ang dating halimbawa ay gumagawa
maramihang mga ulat sa pamamagitan ng paghahati ng log sa 30 minutong pagitan batay sa
mga timestamp.

Ang mga agwat ay kinakalkula mula sa zeroth second/minuto/oras kung saan ang isang timestamp
nangyayari, hindi mula sa anumang oras na tinukoy nito. Halimbawa, may 30 minuto
mga pagitan at timestamp na "12:10:30", ang pagitan ay hindi "12:10:30" hanggang
"12:40:30", ito ay "12:00:00" hanggang "12:29:59". O, na may 1 oras na pagitan, ito ay
"12:00:00" hanggang "12:59:59". Kapag ang isang bagong timestamp ay lumampas sa pagitan, ang isang ulat ay
naka-print, at ang susunod na agwat ay muling kinakalkula batay sa bagong timestamp.

Dahil ang "--iteration" ay 1 bilang default, malamang na gusto mong tumukoy ng bagong value
kung hindi, makakakuha at mag-uulat lamang ang pt-query-digest sa unang agwat mula sa log
dahil 1 interval = 1 iteration. Kung gusto mong makuha at iulat ang bawat pagitan sa a
log, tukuyin ang "--iterations" 0.

--sampol
uri: int

I-filter ang lahat maliban sa unang N paglitaw ng bawat query. Ang mga query ay na-filter sa
ang unang halaga sa "--group-by", kaya bilang default, ito ay sasala sa pamamagitan ng query fingerprint.
Halimbawa, ang "--sample 2" ay magpapahintulot ng dalawang sample na query para sa bawat fingerprint. Kapaki-pakinabang
kasabay ng "--output slowlog" upang i-print ang mga query. Malamang na gusto mong itakda
"--no-report" para maiwasan ang overhead ng pagsasama-sama at pag-uulat kung gumagamit ka lang
ito upang mag-print ng mga sample ng mga query. Isang kumpletong halimbawa:

pt-query-digest --sample 2 --no-report --output slowlog slow.log

--set-vars
uri: Array

Itakda ang mga variable ng MySQL sa listahang pinaghihiwalay ng kuwit na ito ng mga pares na "variable=value".

Bilang default, itinatakda ng tool ang:

wait_timeout=10000

Ino-override ng mga variable na tinukoy sa command line ang mga default na ito. Halimbawa,
ang pagtukoy ng "--set-vars wait_timeout=500" ay na-override ang default na halaga ng 10000.

Ang tool ay nagpi-print ng babala at magpapatuloy kung ang isang variable ay hindi maitakda.

--Ipakita lahat
uri: Hash

Ipakita ang lahat ng mga halaga para sa mga katangiang ito.

Bilang default, ipinapakita lang ng pt-query-digest ang kasing dami ng value ng attribute na kasya sa a
isang linya. Binibigyang-daan ka ng opsyong ito na tukuyin ang mga attribute kung saan gagawin ng lahat ng value
ipapakita (hindi papansinin ang lapad ng linya). Gumagana lang ito para sa mga attribute na may mga string value
tulad ng user, host, db, atbp. Maaaring tukuyin ang maraming katangian, pinaghihiwalay ng kuwit.

--dahil
uri: string

I-parse lang ang mga query na mas bago kaysa sa value na ito (parse query mula noong petsang ito).

Binibigyang-daan ka ng opsyong ito na huwag pansinin ang mga query na mas luma kaysa sa isang partikular na halaga at i-parse lang
yaong mga query na mas bago kaysa sa halaga. Ang halaga ay maaaring ilang uri:

* Simpleng time value N na may opsyonal na suffix: N[shmd], kung saan
s=segundo, h=oras, m=minuto, d=araw (default s kung walang suffix
ibinigay); ito ay tulad ng pagsasabi ng "mula noong N[shmd] nakaraan"
* Buong petsa na may opsyonal na oras: minuto: segundo:
YYYY-MM-DD [HH:MM::SS]
* Maikli, istilong MySQL na petsa:
YYMMDD [HH:MM:SS]
* Anumang oras na expression na sinusuri ng MySQL:
CURRENT_DATE - INTERVAL 7 DAY

Kung magbibigay ka ng MySQL time expression, at hindi mo pa tinukoy ang isang DSN para sa
"--explain", "--processlist", o "--review", pagkatapos ay dapat kang tumukoy ng isang DSN sa
command line upang ang pt-query-digest ay makakonekta sa MySQL upang suriin ang expression.

Ang MySQL time expression ay nakabalot sa loob ng isang query tulad ng "SELECT
UNIX_TIMESTAMP( )", kaya siguraduhin na ang expression ay wasto sa loob nito
tanong. Halimbawa, huwag gamitin UNIX_TIMESTAMP() dahil sa
UNIX_TIMESTAMP(UNIX_TIMESTAMP()) ay nagbabalik ng 0.

Ipinapalagay na ang mga kaganapan ay nasa kronolohikal: mas lumang mga kaganapan sa simula ng log
at mas bagong mga kaganapan sa dulo ng log. Ang "--since" ay mahigpit: binabalewala nito ang lahat ng query
hanggang sa matagpuan ang isa na sapat nang bago. Samakatuwid, kung ang mga kaganapan sa query ay hindi
pare-pareho ang timestamped, ang ilan ay maaaring hindi papansinin na talagang bago.

Tingnan din ang "--hanggang".

--saksakan
maikling porma; uri: string

Socket file na gagamitin para sa koneksyon.

--timeline
Magpakita ng timeline ng mga kaganapan.

Ginagawa ng opsyong ito ang pag-print ng pt-query-digest ng isa pang uri ng ulat: isang timeline ng
mga pangyayari. Ang bawat query ay nakagrupo pa rin at pinagsama-sama sa mga klase ayon sa
"--group-by", ngunit pagkatapos ay naka-print ang mga ito sa magkakasunod na pagkakasunud-sunod. Ang ulat ng timeline
nagpi-print ng timestamp, agwat, bilang at halaga ng bawat klase.

Kung ang gusto mo lang ay ang ulat sa timeline, pagkatapos ay tukuyin ang "--no-report" upang sugpuin ang
default na ulat ng pagsusuri ng query. Kung hindi, ang ulat ng timeline ay ipi-print sa
magtapos bago ang profile sa oras ng pagtugon (tingnan ang "--report-format" at "OUTPUT").

Halimbawa, ito:

pt-query-digest /path/to/log --group-by distill --timeline

ay magpi-print ng isang bagay tulad ng:

##################################################### ######
# distill na ulat
##################################################### ######
# 2009-07-25 11:19:27 1+00:00:01 2 SELECT foo
# 2009-07-27 11:19:30 00:01 2 SELECT bar
# 2009-07-27 11:30:00 1+06:30:00 2 SELECT foo

--type
uri: Array; default: slowlog

Ang uri ng input para i-parse. Ang mga pinahihintulutang uri ay

binlog
I-parse ang isang binary log file na unang na-convert sa text gamit ang mysqlbinlog.

Halimbawa:

mysqlbinlog mysql-bin.000441 > mysql-bin.000441.txt

pt-query-digest --type binlog mysql-bin.000441.txt

genlog
I-parse ang isang MySQL general log file. Ang mga pangkalahatang log ay kulang ng maraming "ATTRIBUTES", lalo na
"Query_time". Ang default na "--order-by" para sa mga pangkalahatang log ay nagbabago sa
"Query_time:cnt".

slowlog
I-parse ang isang log file sa anumang variation ng MySQL slow log format.

tcpdump
Siyasatin ang mga network packet at i-decode ang MySQL client protocol, pagkuha ng mga query
at mga tugon mula dito.

Ang pt-query-digest ay hindi aktwal na nanonood ng network (ibig sabihin, HINDI ito "sniff
packets"). Sa halip, pinapa-parse lang nito ang output ng tcpdump. Ikaw ang may pananagutan
para sa pagbuo ng output na ito; Hindi ito ginagawa ng pt-query-digest para sa iyo. Tapos magpadala ka
ito sa pt-query-digest gaya ng gagawin mo sa anumang log file: bilang mga file sa command line o
sa STDIN.

Inaasahan ng parser na ma-format ang input gamit ang mga sumusunod na opsyon: "-x -n -q
-tttt". Halimbawa, kung gusto mong makuha ang output mula sa iyong lokal na makina, ikaw
maaaring gumawa ng isang bagay tulad ng sumusunod (dapat na huling dumating ang port sa FreeBSD):

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 \
> mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt

Ang iba pang mga parameter ng tcpdump, gaya ng -s, -c, at -i, ay nasa iyo. Gumawa lamang
sigurado ang output ay ganito ang hitsura (may linya break sa unang linya upang maiwasan
mga problema sa man-page):

2009-04-12 09:50:16.804849 IP 127.0.0.1.42167
> 127.0.0.1.3306: tcp 37
0x0000: 4508 0059 6eb2 4000 4006 cde2 7f00 0001
0x0010: ....

Tandaan na ang tcpdump ay may madaling gamiting -c na opsyon upang huminto pagkatapos nitong makuha ang ilang bilang ng
mga pakete! Iyan ay lubhang kapaki-pakinabang para sa pagsubok ng iyong tcpdump command. Tandaan na ang tcpdump
hindi makuha ang trapiko sa isang Unix socket. Basahin
<http://bugs.mysql.com/bug.php?id=31577> kung nalilito ka tungkol dito.

Ipinaliwanag ni Devananda Van Der Veen sa MySQL Performance Blog kung paano makuha
trapiko nang hindi naghuhulog ng mga packet sa mga abalang server. Ang mga nahulog na packet ay sanhi ng pt-query-
digest upang makaligtaan ang tugon sa isang kahilingan, pagkatapos ay tingnan ang tugon sa isang kahilingan sa ibang pagkakataon
at magtalaga ng maling oras ng pagpapatupad sa query. Maaari mong baguhin ang filter sa
isang bagay tulad ng sumusunod upang makatulong sa pagkuha ng isang subset ng mga query. (Tingnan
<http://www.mysqlperformanceblog.com/?p=6092> para sa mga detalye.)

tcpdump -i any -s 65535 -x -n -q -tttt \
'port 3306 at tcp[1] & 7 == 2 at tcp[3] & 7 == 2'

Lahat ng MySQL server na tumatakbo sa port 3306 ay awtomatikong nakita sa tcpdump
output. Samakatuwid, kung ang tcpdump out ay naglalaman ng mga packet mula sa maramihang mga server sa
port 3306 (halimbawa, 10.0.0.1:3306, 10.0.0.2:3306, atbp.), lahat ng packet/query
mula sa lahat ng mga server na ito ay susuriin nang magkasama na para bang sila ay isang server.

Kung sinusuri mo ang trapiko para sa isang MySQL server na hindi tumatakbo sa port 3306,
tingnan ang "--watch-server".

Tandaan din na maaaring mabigo ang pt-query-digest na iulat ang database para sa mga query kung kailan
pag-parse ng tcpdump output. Ang database ay natuklasan lamang sa unang pagkonekta
mga kaganapan para sa isang bagong kliyente o kung kailan ay pinaandar. Kung ang output ng tcpdump
hindi naglalaman ng alinman sa mga ito, pagkatapos ay hindi matuklasan ng pt-query-digest ang database.

Sinusuportahan ang mga pahayag na inihanda sa panig ng server. Ang trapikong naka-encrypt ng SSL ay hindi maaaring
siniyasat at na-decode.

rawlog
Ang mga raw log ay hindi MySQL log ngunit simpleng mga text file na may isang SQL statement bawat linya,
gaya ng:

PUMILI c MULA t WHERE id=1
/* Kumusta, mundo! */ PUMILI * MULA sa t2 LIMIT 1
INSERT IN TO t (a, b) VALUES ('foo', 'bar')
INSERT IN TO t SELECT * MULA sa mga unggoy

Dahil ang mga raw log ay walang anumang sukatan, maraming mga opsyon at tampok ng pt-query-
digest ay hindi gumagana sa kanila.

Ang isang kaso ng paggamit para sa mga raw log ay ang pagraranggo ng mga query ayon sa bilang kung kailan ang tanging impormasyon
available ay isang listahan ng mga query, mula sa botohan na "PAKITA ANG PROCESSLIST" halimbawa.

--hanggang
uri: string

I-parse lang ang mga query na mas luma sa value na ito (parse ang mga query hanggang sa petsang ito).

Binibigyang-daan ka ng opsyong ito na huwag pansinin ang mga query na mas bago kaysa sa isang partikular na halaga at i-parse lang
yaong mga query na mas luma kaysa sa halaga. Ang halaga ay maaaring isa sa parehong mga uri
nakalista para sa "--mula noon".

Hindi tulad ng "--since", "--until" ay hindi mahigpit: lahat ng query ay na-parse hanggang ang isa ay magkaroon ng
timestamp na katumbas o mas malaki sa "--until". Pagkatapos ang lahat ng kasunod na mga query ay
hindi pinansin

--gumagamit
maikling anyo: -u; uri: string

User para sa pag-login kung hindi kasalukuyang user.

--mga pagkakaiba-iba
uri: Array

Iulat ang bilang ng mga variation sa mga value ng mga attribute na ito.

Ipinapakita ng mga variation kung gaano karaming mga natatanging value ang isang attribute sa loob ng isang klase. Ang karaniwan
ang halaga para sa opsyong ito ay "arg" na nagpapakita kung gaano karaming mga natatanging query ang nasa
klase. Ito ay maaaring maging kapaki-pakinabang upang matukoy ang cacheability ng isang query.

Natutukoy ang mga natatanging halaga ng mga checksum ng CRC32 ng mga halaga ng mga katangian. Ang mga ito
ang mga checksum ay iniuulat sa ulat ng query para sa mga katangiang tinukoy ng opsyong ito,
gaya ng:

# arg crc 109 (1/25%), 144 (1/25%)... 2 higit pa

Sa klase na iyon ay mayroong 4 na natatanging query. Ang mga checksum ng unang dalawa
ipinapakita ang mga pagkakaiba-iba, at ang bawat isa ay naganap nang isang beses (o, 25% ng oras).

Ang mga bilang ng mga natatanging variation ay tinatayang dahil 1,000 variation lang ang naitatala
nailigtas. Ang mod (%) 1000 ng buong CRC32 checksum ay naka-save, kaya ang ilan ay naiiba
ang mga checksum ay tinatrato bilang pantay.

--bersyon
Ipakita ang bersyon at lumabas.

--[no] version-check
default: oo

Tingnan ang pinakabagong bersyon ng Percona Toolkit, MySQL, at iba pang mga program.

Isa itong karaniwang feature na "awtomatikong suriin ang mga update", na may dalawang karagdagang
mga tampok. Una, sinusuri ng tool ang bersyon ng iba pang mga program sa lokal na sistema sa
karagdagan sa sarili nitong bersyon. Halimbawa, sinusuri nito ang bersyon ng bawat MySQL server
kumokonekta ito sa, Perl, at sa Perl module na DBD::mysql. Pangalawa, ito ay nagsusuri at nagbabala
tungkol sa mga bersyon na may mga kilalang problema. Halimbawa, ang MySQL 5.5.25 ay may kritikal na bug at
ay muling inilabas bilang 5.5.25a.

Ang anumang mga update o kilalang problema ay naka-print sa STDOUT bago ang normal na output ng tool.
Ang tampok na ito ay hindi dapat makagambala sa normal na operasyon ng tool.

Para sa karagdagang impormasyon, bisitahin ang .

--watch-server
uri: string

Sinasabi ng opsyong ito sa pt-query-digest kung aling IP address at port ng server (tulad ng
"10.0.0.1:3306") upang panoorin kapag nag-parse ng tcpdump (para sa "--type" tcpdump); lahat ng iba pa
hindi pinapansin ang mga server. Kung hindi mo ito tinukoy, pinapanood ng pt-query-digest ang lahat ng mga server sa pamamagitan ng
naghahanap ng anumang IP address gamit ang port 3306 o "mysql". Kung nanonood ka ng isang server
na may hindi karaniwang port, hindi ito gagana, kaya dapat mong tukuyin ang IP address at port
manood.

Kung gusto mong manood ng isang halo ng mga server, ang ilan ay tumatakbo sa karaniwang port 3306 at ang ilan
tumatakbo sa mga hindi karaniwang port, kailangan mong lumikha ng hiwalay na tcpdump output para sa
mga hindi karaniwang port server at pagkatapos ay tukuyin ang opsyong ito para sa bawat isa. Sa kasalukuyan pt-query-
hindi ma-auto-detect ng digest ang mga server sa port 3306 at sasabihin din na manood ng server sa a
hindi karaniwang port.

DNS Opsyon


Ang mga opsyong DSN na ito ay ginagamit upang lumikha ng isang DSN. Ang bawat opsyon ay ibinibigay tulad ng "option=value".
Ang mga opsyon ay case-sensitive, kaya ang P at p ay hindi magkaparehong opsyon. hindi pwede
whitespace bago o pagkatapos ng "=" at kung ang value ay naglalaman ng whitespace dapat itong sipi.
Ang mga opsyon sa DSN ay pinaghihiwalay ng kuwit. Tingnan ang percona-toolkit manpage para sa buong detalye.

· AT

dsn: charset; kopya: oo

Default na set ng character.

· D

dsn: database; kopya: oo

Default na database na gagamitin kapag kumokonekta sa MySQL.

· F

dsn: mysql_read_default_file; kopya: oo

Basahin lamang ang mga default na opsyon mula sa ibinigay na file.

· H

dsn: host; kopya: oo

Kumonekta sa host.

· p

dsn: password; kopya: oo

Password na gagamitin kapag kumokonekta. Kung ang password ay naglalaman ng mga kuwit, dapat silang i-escape
na may backslash: "exam\,ple"

· P

dsn: port; kopya: oo

Port number na gagamitin para sa koneksyon.

· S

dsn: mysql_socket; kopya: oo

Socket file na gagamitin para sa koneksyon.

· t

Ang talahanayang "--review" o "--history."

· ikaw

dsn: gumagamit; kopya: oo

User para sa pag-login kung hindi kasalukuyang user.

Kapaligiran


Ang environment variable na "PTDEBUG" ay nagbibigay-daan sa verbose debugging na output sa STDERR. Upang paganahin
pag-debug at pagkuha ng lahat ng output sa isang file, patakbuhin ang tool tulad ng:

PTDEBUG=1 pt-query-digest ... > FILE 2>&1

Mag-ingat: ang pag-debug ng output ay malaki at maaaring makabuo ng ilang megabytes ng output.

SYSTEM MGA KINAKAILANGAN


Kailangan mo ng Perl, DBI, DBD::mysql, at ilang mga pangunahing pakete na dapat i-install sa anumang
makatwirang bagong bersyon ng Perl.

Gumamit ng pt-query-digestp online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad




×
anunsyo
❤️Mamili, mag-book, o bumili dito — walang gastos, tumutulong na panatilihing libre ang mga serbisyo.