ນີ້ແມ່ນຄໍາສັ່ງ pt-index-usagep ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
pt-index-usage - ອ່ານຄໍາຖາມຈາກບັນທຶກແລະວິເຄາະວິທີທີ່ພວກເຂົາໃຊ້ດັດສະນີ.
ສະຫຼຸບສັງລວມ
ການນໍາໃຊ້: pt-index-usage [ຕົວເລືອກ] [FILES]
pt-index-usage ອ່ານຄໍາຖາມຈາກບັນທຶກແລະວິເຄາະວິທີທີ່ພວກເຂົາໃຊ້ດັດສະນີ.
ວິເຄາະແບບສອບຖາມໃນ slow.log ແລະພິມບົດລາຍງານ:
pt-index-usage /path/to/slow.log --host localhost
ປິດການໃຊ້ງານລາຍງານ ແລະບັນທຶກຜົນໄດ້ຮັບໃສ່ຖານຂໍ້ມູນ percona ສໍາລັບການວິເຄາະພາຍຫຼັງ:
pt-index-usage slow.log --no-report --save-results-database percona
RISKS
Percona Toolkit ແມ່ນຜູ້ໃຫຍ່, ພິສູດໃນໂລກທີ່ແທ້ຈິງ, ແລະທົດສອບໄດ້ດີ, ແຕ່ຖານຂໍ້ມູນທັງຫມົດ
ເຄື່ອງມືສາມາດສ້າງຄວາມສ່ຽງຕໍ່ລະບົບແລະເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນ. ກ່ອນທີ່ຈະໃຊ້ເຄື່ອງມືນີ້,
ກະລຸນາ:
· ອ່ານເອກະສານຂອງເຄື່ອງມື
·ທົບທວນເຄື່ອງມືທີ່ຮູ້ຈັກ "BUGS"
· ທົດສອບເຄື່ອງມືໃນເຊີບເວີທີ່ບໍ່ແມ່ນການຜະລິດ
·ສໍາຮອງເຄື່ອງແມ່ຂ່າຍການຜະລິດຂອງທ່ານແລະກວດສອບການສໍາຮອງຂໍ້ມູນ
ລາຍລະອຽດ
ເຄື່ອງມືນີ້ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນ MySQL, ອ່ານຜ່ານບັນທຶກການສອບຖາມ, ແລະໃຊ້ຄໍາອະທິບາຍ
ເພື່ອຖາມ MySQL ວ່າມັນຈະໃຊ້ແຕ່ລະແບບສອບຖາມແນວໃດ. ເມື່ອມັນສໍາເລັດ, ມັນພິມອອກບົດລາຍງານກ່ຽວກັບ
ດັດສະນີທີ່ຄໍາຖາມບໍ່ໄດ້ໃຊ້.
ບັນທຶກການສອບຖາມຕ້ອງຢູ່ໃນຮູບແບບບັນທຶກການສອບຖາມຊ້າຂອງ MySQL. ຖ້າທ່ານຕ້ອງການປ້ອນ a
ຮູບແບບທີ່ແຕກຕ່າງກັນ, ທ່ານສາມາດນໍາໃຊ້ pt-query-digest ເພື່ອແປຮູບແບບຕ່າງໆ. ຖ້າເຈົ້າບໍ່
ລະບຸຊື່ໄຟລ໌, ເຄື່ອງມືອ່ານຈາກ STDIN.
ເຄື່ອງມືດໍາເນີນການສອງຂັ້ນຕອນ. ໃນຂັ້ນຕອນທໍາອິດ, ເຄື່ອງມືໃຊ້ເວລາສາງຂອງຕາຕະລາງທັງຫມົດ
ແລະດັດສະນີໃນຖານຂໍ້ມູນຂອງເຈົ້າ, ດັ່ງນັ້ນມັນສາມາດປຽບທຽບດັດສະນີທີ່ມີຢູ່ກັບສິ່ງທີ່ເປັນ
ໃຊ້ຕົວຈິງໂດຍການສອບຖາມໃນບັນທຶກ. ໃນຂັ້ນຕອນທີສອງ, ມັນດໍາເນີນການອະທິບາຍກ່ຽວກັບແຕ່ລະຄົນ
ສອບຖາມໃນບັນທຶກການສອບຖາມ. ມັນໃຊ້ການເຊື່ອມຕໍ່ຖານຂໍ້ມູນແຍກຕ່າງຫາກເພື່ອເກັບຕາຕະລາງແລະ
ແລ່ນ EXPLAIN, ສະນັ້ນມັນເປີດສອງການເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ.
ຖ້າການສອບຖາມບໍ່ແມ່ນ SELECT, ມັນພະຍາຍາມປ່ຽນເປັນ SELECT query ທີ່ທຽບເທົ່າປະມານ.
ສະນັ້ນມັນສາມາດໄດ້ຮັບການອະທິບາຍ. ນີ້ບໍ່ແມ່ນຂະບວນການທີ່ສົມບູນແບບ, ແຕ່ມັນກໍ່ດີພໍທີ່ຈະເປັນ
ເປັນປະໂຫຍດ.
ເຄື່ອງມືຂ້າມຂັ້ນຕອນ EXPLAIN ສຳລັບການສອບຖາມທີ່ຊໍ້າກັນທີ່ແນ່ນອນຂອງສິ່ງທີ່ເຫັນ
ກ່ອນ. ມັນສົມມຸດວ່າການສອບຖາມດຽວກັນຈະສ້າງແຜນ EXPLAIN ດຽວກັນກັບມັນ
ກ່ອນຫນ້ານີ້ (ປົກກະຕິແລ້ວເປັນການສົມມຸດຕິຖານທີ່ປອດໄພ, ແລະໂດຍທົ່ວໄປດີສໍາລັບການປະຕິບັດ), ແລະງ່າຍດາຍ
ເພີ່ມຈໍານວນເວລາທີ່ດັດສະນີຖືກນໍາໃຊ້. ຢ່າງໃດກໍຕາມ, ຄໍາຖາມທີ່ມີ
ລາຍນີ້ວມືອັນດຽວກັນແຕ່ checksum ທີ່ແຕກຕ່າງກັນຈະຖືກອະທິບາຍຄືນໃໝ່. ຄໍາຖາມທີ່ມີ
ຕົວເລກຄົງທີ່ຕົວຫນັງສືທີ່ແຕກຕ່າງກັນສາມາດມີແຜນການປະຕິບັດທີ່ແຕກຕ່າງກັນ, ແລະນີ້ເປັນສິ່ງສໍາຄັນເພື່ອ
ມາດຕະການ.
ຫຼັງຈາກການອະທິບາຍການສອບຖາມ, ມັນຈໍາເປັນຕ້ອງພະຍາຍາມສ້າງແຜນທີ່ນາມແຝງໃນການສອບຖາມກັບຄືນໄປບ່ອນ.
ຊື່ຕາຕະລາງຕົ້ນສະບັບ. ສໍາລັບຕົວຢ່າງ, ພິຈາລະນາແຜນການ EXPLAIN ສໍາລັບການສອບຖາມຕໍ່ໄປນີ້:
SELECT * FROM tbl1 AS foo;
ຜົນໄດ້ຮັບຂອງ EXPLAIN ຈະສະແດງການເຂົ້າເຖິງຕາຕະລາງ "foo", ແລະມັນຕ້ອງຖືກແປກັບຄືນໄປບ່ອນ
"tbl1". ຂະບວນການນີ້ກ່ຽວຂ້ອງກັບການແຍກວິເຄາະທີ່ຊັບຊ້ອນ. ໂດຍທົ່ວໄປແລ້ວມັນຖືກຕ້ອງຫຼາຍ, ແຕ່ວ່າມີ
ແມ່ນບາງໂອກາດທີ່ມັນອາດຈະບໍ່ຖືກຕ້ອງ. ຖ້າທ່ານພົບກໍລະນີທີ່ມັນລົ້ມເຫລວ, ສົ່ງ a
ບົດລາຍງານ bug ແລະກໍລະນີທົດສອບການແຜ່ພັນ.
ການສອບຖາມທີ່ບໍ່ສາມາດອະທິບາຍໄດ້ຈະເຮັດໃຫ້ເກີດການສອບຖາມຕໍ່ໄປທັງໝົດທີ່ມີອັນດຽວກັນ
ລາຍນິ້ວມືຖືກເຂົ້າບັນຊີດຳ. ນີ້ແມ່ນເພື່ອຫຼຸດຜ່ອນການເຮັດວຽກທີ່ເຂົາເຈົ້າເຮັດໃຫ້ເກີດ, ແລະປ້ອງກັນບໍ່ໃຫ້ເຂົາເຈົ້າ
ຈາກການສືບຕໍ່ພິມຂໍ້ຄວາມຜິດພາດ. ຢ່າງໃດກໍຕາມ, ຢ່າງຫນ້ອຍໃນຂັ້ນຕອນຂອງເຄື່ອງມືນີ້
ການພັດທະນາ, ມັນເປັນຄວາມຄິດເຫັນຂອງຂ້າພະເຈົ້າວ່າມັນບໍ່ເປັນຄວາມຄິດທີ່ດີທີ່ຈະ preemptively silence ເຫຼົ່ານີ້, ຫຼື
ປ້ອງກັນເຂົາເຈົ້າຈາກການຖືກອະທິບາຍທັງໝົດ. ຂ້ອຍກໍາລັງຊອກຫາຄວາມຄິດເຫັນຫຼາຍກ່ຽວກັບວິທີການ
ປັບປຸງສິ່ງຕ່າງໆເຊັ່ນການແຍກຄໍາຖາມ. ດັ່ງນັ້ນກະລຸນາສົ່ງກໍລະນີທົດສອບຂອງທ່ານໂດຍອີງໃສ່
ພິມເຄື່ອງມືຜິດພາດ!
OUTPUT
ຫຼັງຈາກທີ່ມັນອ່ານເຫດການທັງຫມົດໃນບັນທຶກ, ເຄື່ອງມືຈະພິມອອກຄໍາຖະແຫຼງ DROP ສໍາລັບທຸກໆ
ດັດຊະນີທີ່ບໍ່ໄດ້ໃຊ້. ມັນຂ້າມດັດສະນີສໍາລັບຕາຕະລາງທີ່ບໍ່ເຄີຍເຂົ້າເຖິງໂດຍໃດໆ
ຄໍາຖາມຢູ່ໃນບັນທຶກ, ເພື່ອຫຼີກເວັ້ນການຜົນໄດ້ຮັບທີ່ບໍ່ຖືກຕ້ອງ.
ຖ້າຫາກວ່າທ່ານບໍ່ໄດ້ລະບຸ "--quiet", ເຄື່ອງມືຍັງອອກຄໍາເຕືອນກ່ຽວກັບຄໍາສັ່ງທີ່
ບໍ່ສາມາດອະທິບາຍໄດ້ ແລະຄ້າຍຄືກັນ. ເຫຼົ່ານີ້ໄປສູ່ຄວາມຜິດພາດມາດຕະຖານ.
ລາຍງານຄວາມຄືບໜ້າຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ (ເບິ່ງ "--progress"). ເຫຼົ່ານີ້ຍັງໄປມາດຕະຖານ
ຜິດພາດ.
OPTIONS
ເຄື່ອງມືນີ້ຍອມຮັບການໂຕ້ຖຽງແຖວຄໍາສັ່ງເພີ່ມເຕີມ. ອ້າງອີງເຖິງ "SYNOPSIS" ແລະການນໍາໃຊ້
ຂໍ້ມູນສໍາລັບລາຍລະອຽດ.
--ຖາມຜ່ານ
ເຕືອນລະຫັດຜ່ານເມື່ອເຊື່ອມຕໍ່ກັບ MySQL.
--ຊຸດຕົວອັກສອນ
ຮູບແບບສັ້ນ: -A; ປະເພດ: string
ຕັ້ງຕົວອັກສອນເລີ່ມຕົ້ນ. ຖ້າຄ່າແມ່ນ utf8, ຕັ້ງ binmode ຂອງ Perl ໃນ STDOUT ເປັນ utf8,
ຜ່ານຕົວເລືອກ mysql_enable_utf8 ໄປ DBD::mysql, ແລະແລ່ນ SET NAMES UTF8 ຫຼັງຈາກ.
ເຊື່ອມຕໍ່ກັບ MySQL. ຄ່າອື່ນໃດກຳນົດ binmode ໃນ STDOUT ໂດຍບໍ່ມີຊັ້ນ utf8,
ແລະດໍາເນີນການ SET NAMES ຫຼັງຈາກເຊື່ອມຕໍ່ກັບ MySQL.
--config
ປະເພດ: Array
ອ່ານລາຍຊື່ໄຟລ໌ config ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດນີ້; ຖ້າລະບຸ, ນີ້ຈະຕ້ອງເປັນອັນທໍາອິດ
ທາງເລືອກໃນແຖວຄໍາສັ່ງ.
--create-save-results-database
ສ້າງ "--save-results-database" ຖ້າມັນບໍ່ມີ.
ຖ້າ "--save-results-database" ມີຢູ່ແລ້ວແລະທາງເລືອກນີ້ຖືກລະບຸ, the
ຖານຂໍ້ມູນຖືກນໍາໃຊ້ແລະຕາຕະລາງທີ່ຈໍາເປັນແມ່ນຖືກສ້າງຂຶ້ນຖ້າພວກເຂົາບໍ່ມີຢູ່ແລ້ວ.
--[ບໍ່]ສ້າງ-ວິວ
ສ້າງມຸມເບິ່ງສໍາລັບ "--save-results-database" ຄໍາຖາມຕົວຢ່າງ.
ຄໍາຖາມຕົວຢ່າງຈໍານວນຫນຶ່ງແມ່ນໃຫ້ສໍາລັບການສອບຖາມຕາຕະລາງໃນ
"--save-results-database". ຄໍາຖາມຕົວຢ່າງເຫຼົ່ານີ້ແມ່ນ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ສ້າງເປັນ views.
ການລະບຸ "--no-create-views" ປ້ອງກັນການເບິ່ງເຫຼົ່ານີ້ຈາກການສ້າງ.
--ຖານຂໍ້ມູນ
ຮູບແບບສັ້ນ: -D; ປະເພດ: string
ຖານຂໍ້ມູນທີ່ຈະໃຊ້ສໍາລັບການເຊື່ອມຕໍ່.
--ຖານຂໍ້ມູນ
ຮູບແບບສັ້ນ: -d; ປະເພດ: hash
ເອົາພຽງແຕ່ຕາຕະລາງ ແລະດັດຊະນີຈາກບັນຊີລາຍຊື່ຖານຂໍ້ມູນທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ.
--databases-regex
ປະເພດ: string
ພຽງແຕ່ໄດ້ຮັບຕາຕະລາງແລະດັດສະນີຈາກຖານຂໍ້ມູນທີ່ມີຊື່ກົງກັບ Perl regex ນີ້.
--defaults-file
ຮູບແບບສັ້ນ: -F; ປະເພດ: string
ພຽງແຕ່ອ່ານຕົວເລືອກ mysql ຈາກໄຟລ໌ທີ່ໃຫ້. ທ່ານຕ້ອງໃຫ້ຊື່ເສັ້ນທາງຢ່າງແທ້ຈິງ.
-- ລຸດລົງ
ປະເພດ: Hash; ຄ່າເລີ່ມຕົ້ນ: ບໍ່ເປັນເອກະລັກ
ແນະນໍາໃຫ້ຫຼຸດລົງພຽງແຕ່ປະເພດຂອງດັດຊະນີທີ່ບໍ່ໄດ້ໃຊ້ເຫຼົ່ານີ້.
ໂດຍຄ່າເລີ່ມຕົ້ນ pt-index-usage ພຽງແຕ່ຈະແນະນໍາໃຫ້ຫຼຸດລົງດັດຊະນີທີສອງທີ່ບໍ່ໄດ້ໃຊ້, ບໍ່ແມ່ນ
ດັດຊະນີຫຼັກ ຫຼືເປັນເອກະລັກ. ທ່ານສາມາດກໍານົດປະເພດຂອງການດັດສະນີເຄື່ອງມືທີ່ບໍ່ໄດ້ໃຊ້
ແນະນໍາໃຫ້ຫຼຸດລົງ: ຕົ້ນຕໍ, ເປັນເອກະລັກ, ບໍ່ເປັນເອກະລັກ, ທັງຫມົດ.
ຄໍາຖະແຫຼງທີ່ "ALTER TABLE" ແຍກຕ່າງຫາກສໍາລັບແຕ່ລະປະເພດແມ່ນພິມອອກ. ດັ່ງນັ້ນຖ້າທ່ານລະບຸ
"--drop all" ແລະມີລະຫັດຕົ້ນຕໍແລະດັດຊະນີທີ່ບໍ່ເປັນເອກະລັກ, "ຕາຕະລາງ ALTER ...
DROP" ສໍາລັບແຕ່ລະຄົນຈະຖືກພິມອອກເປັນແຖວແຍກຕ່າງຫາກ.
--empty-save-results-tables
ວາງແລະສ້າງຄືນໃຫມ່ຕາຕະລາງທີ່ມີຢູ່ແລ້ວທັງຫມົດໃນ "--save-results-database". ນີ້
ອະນຸຍາດໃຫ້ຂໍ້ມູນຈາກການແລ່ນຜ່ານມາທີ່ຈະຖືກລົບອອກກ່ອນທີ່ຈະແລ່ນໃນປັດຈຸບັນ.
- ຊ່ວຍ
ສະແດງການຊ່ວຍເຫຼືອ ແລະອອກ.
-ເຈົ້າພາບ
ຮູບແບບສັ້ນ: -h; ປະເພດ: string
ເຊື່ອມຕໍ່ຫາເຈົ້າພາບ.
--ignore-ຖານຂໍ້ມູນ
ປະເພດ: Hash
ບໍ່ສົນໃຈລາຍຊື່ຖານຂໍ້ມູນທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດນີ້.
--ignore-databases-regex
ປະເພດ: string
ບໍ່ສົນໃຈຖານຂໍ້ມູນທີ່ມີຊື່ກົງກັບ Perl regex ນີ້.
--ignore-ຕາຕະລາງ
ປະເພດ: Hash
ບໍ່ສົນໃຈລາຍຊື່ຕາຕະລາງທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດນີ້.
ຊື່ຕາຕະລາງອາດມີຄຸນສົມບັດກັບຊື່ຖານຂໍ້ມູນ.
--ignore-tables-regex
ປະເພດ: string
ບໍ່ສົນໃຈຕາຕະລາງທີ່ມີຊື່ກົງກັບ Perl regex.
-ລະຫັດຜ່ານ
ຮູບແບບສັ້ນ: -p; ປະເພດ: string
ລະຫັດຜ່ານທີ່ຈະໃຊ້ໃນເວລາເຊື່ອມຕໍ່. ຖ້າລະຫັດຜ່ານມີເຄື່ອງໝາຍຈຸດ, ພວກມັນຈະຕ້ອງຖືກຫລົບໜີ
ກັບ backslash: "ການສອບເສັງ, ple"
--ພອດ
ຮູບແບບສັ້ນ: -P; ປະເພດ: int
ໝາຍເລກພອດເພື່ອໃຊ້ສຳລັບການເຊື່ອມຕໍ່.
- ແມ່ຍິງ
ປະເພດ: array; ຄ່າເລີ່ມຕົ້ນ: ເວລາ, 30
ພິມລາຍງານຄວາມຄືບໜ້າໄປໃຫ້ STDERR. ຄ່າແມ່ນລາຍການທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດທີ່ມີສອງສ່ວນ.
ສ່ວນທໍາອິດສາມາດເປັນເປີເຊັນ, ເວລາ, ຫຼືການຊໍ້າຄືນ; ສ່ວນທີສອງກໍານົດວິທີການ
ເລື້ອຍໆການອັບເດດຄວນຈະຖືກພິມອອກເປັນເປີເຊັນ, ວິນາທີ, ຫຼືຈໍານວນການຊໍ້າຄືນ.
--ງຽບ
ຮູບແບບສັ້ນ: -q
ຢ່າພິມຄໍາເຕືອນໃດໆ. ຍັງປິດການໃຊ້ງານ "--progress".
--[ບໍ່]ລາຍງານ
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ພິມບົດລາຍງານສໍາລັບ "--report-format".
ທ່ານອາດຈະຕ້ອງການປິດການລາຍງານໂດຍການລະບຸ "--no-report" ຖ້າ, ຕົວຢ່າງ, ທ່ານ
ຍັງລະບຸ "--save-results-database" ແລະທ່ານພຽງແຕ່ຕ້ອງການສອບຖາມຕາຕະລາງຜົນໄດ້ຮັບ
ຕໍ່ມາ.
--report-format
ປະເພດ: Array; ຄ່າເລີ່ມຕົ້ນ: drop_unused_indexes
ໃນປັດຈຸບັນມີບົດລາຍງານດຽວເທົ່ານັ້ນ: drop_unused_indexes. ບົດລາຍງານນີ້ພິມ SQL
ຄໍາຖະແຫຼງສໍາລັບການຫຼຸດລົງດັດຊະນີທີ່ບໍ່ໄດ້ໃຊ້ໃດໆ. ເບິ່ງ "--drop".
ເບິ່ງ "--[no]ບົດລາຍງານ".
--save-results-database
ປະເພດ: DSN
ບັນທຶກຜົນໄດ້ຮັບໃສ່ຕາຕະລາງໃນຖານຂໍ້ມູນນີ້. ຂໍ້ມູນກ່ຽວກັບດັດສະນີ, ຄໍາຖາມ, ຕາຕະລາງ
ແລະການນໍາໃຊ້ຂອງພວກມັນຖືກເກັບໄວ້ໃນຫຼາຍໆຕາຕະລາງໃນຖານຂໍ້ມູນທີ່ລະບຸໄວ້. ຕາຕະລາງແມ່ນ
ສ້າງອັດຕະໂນມັດຖ້າພວກມັນບໍ່ມີຢູ່. ຖ້າຖານຂໍ້ມູນບໍ່ມີ, ມັນສາມາດເປັນອັດຕະໂນມັດ.
ສ້າງດ້ວຍ "--create-save-results-database". ໃນກໍລະນີນີ້ການເຊື່ອມຕໍ່ແມ່ນ
ໃນເບື້ອງຕົ້ນແມ່ນບໍ່ມີຖານຂໍ້ມູນເລີ່ມຕົ້ນ, ຫຼັງຈາກນັ້ນ, ຫຼັງຈາກຖານຂໍ້ມູນຖືກສ້າງຂຶ້ນ, ມັນແມ່ນ
ໃຊ້.
pt-index-usage ປະຕິບັດຄໍາສັ່ງ INSERT ເພື່ອບັນທຶກຜົນໄດ້ຮັບ. ເພາະສະນັ້ນ, ທ່ານຄວນ
ຈົ່ງລະວັງຖ້າທ່ານໃຊ້ຄຸນສົມບັດນີ້ຢູ່ໃນເຊີບເວີການຜະລິດ. ມັນອາດຈະເພີ່ມການໂຫຼດ, ຫຼື
ເຮັດໃຫ້ເກີດບັນຫາຖ້າທ່ານບໍ່ຕ້ອງການໃຫ້ເຄື່ອງແມ່ຂ່າຍຂຽນໄປຫາ, ຫຼືອື່ນໆ.
ນີ້ແມ່ນຄຸນສົມບັດໃຫມ່. ມັນອາດຈະມີການປ່ຽນແປງໃນການປ່ອຍໃນອະນາຄົດ.
ຫຼັງຈາກແລ່ນ, ທ່ານສາມາດສອບຖາມຕາຕະລາງການນໍາໃຊ້ເພື່ອຕອບຄໍາຖາມຕ່າງໆກ່ຽວກັບດັດສະນີ
ການນໍາໃຊ້. ຕາຕະລາງມີຄໍານິຍາມ CREATE TABLE ຕໍ່ໄປນີ້:
MAGIC_create_indexes:
ສ້າງຕາຕະລາງຖ້າບໍ່ມີດັດຊະນີ (
db VARCHAR(64) ບໍ່ແມ່ນ NULL,
tbl VARCHAR(64) ບໍ່ແມ່ນ NULL,
idx VARCHAR(64) ບໍ່ແມ່ນ NULL,
cnt BIGINT ບໍ່ໄດ້ລົງນາມບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ 0,
ປຸ່ມຫຼັກ (db, tbl, idx)
)
MAGIC_create_queries:
ສ້າງຕາຕະລາງຖ້າບໍ່ມີຄໍາຖາມ (
query_id BIGINT ບໍ່ໄດ້ເຊັນບໍ່ແມ່ນ NULL,
ຂໍ້ຄວາມລາຍນິ້ວມືບໍ່ແມ່ນ NULL,
ຕົວຢ່າງຂໍ້ຄວາມບໍ່ແມ່ນ NULL,
ລະຫັດຫຼັກ (query_id)
)
MAGIC_create_tables:
ສ້າງຕາຕະລາງຖ້າບໍ່ມີຕາຕະລາງ (
db VARCHAR(64) ບໍ່ແມ່ນ NULL,
tbl VARCHAR(64) ບໍ່ແມ່ນ NULL,
cnt BIGINT ບໍ່ໄດ້ລົງນາມບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ 0,
ປຸ່ມຫຼັກ (db, tbl)
)
MAGIC_create_index_usage:
ສ້າງຕາຕະລາງຖ້າບໍ່ມີ index_usage (
query_id BIGINT ບໍ່ໄດ້ເຊັນບໍ່ແມ່ນ NULL,
db VARCHAR(64) ບໍ່ແມ່ນ NULL,
tbl VARCHAR(64) ບໍ່ແມ່ນ NULL,
idx VARCHAR(64) ບໍ່ແມ່ນ NULL,
cnt BIGINT ບໍ່ໄດ້ລົງນາມບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ 1,
UNIQUE INDEX (query_id, db, tbl, idx)
)
MAGIC_create_index_alternatives:
ສ້າງຕາຕະລາງຖ້າບໍ່ມີ index_alternatives (
query_id BIGINT UNSigned ບໍ່ແມ່ນ NULL, -- ຄໍາຖາມນີ້ໃຊ້
db VARCHAR(64) ບໍ່ແມ່ນ NULL, -- ດັດຊະນີນີ້, ແຕ່...
tbl VARCHAR(64) ບໍ່ແມ່ນ NULL, --
idx VARCHAR(64) ບໍ່ແມ່ນ NULL, --
alt_idx VARCHAR(64) ບໍ່ແມ່ນ NULL, -- ເປັນທາງເລືອກ
cnt BIGINT ບໍ່ໄດ້ລົງນາມບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ 1,
UNIQUE INDEX (query_id, db, tbl, idx, alt_idx),
INDEX (db, tbl, idx),
INDEX (db, tbl, alt_idx)
)
ຕໍ່ໄປນີ້ແມ່ນບາງຄໍາຖາມທີ່ທ່ານສາມາດດໍາເນີນການຕໍ່ກັບຕາຕະລາງເຫຼົ່ານີ້ເພື່ອຕອບທົ່ວໄປ
ຄໍາຖາມທີ່ທ່ານອາດຈະມີ. ແຕ່ລະແບບສອບຖາມຍັງຖືກສ້າງເປັນມຸມເບິ່ງ (ດ້ວຍ MySQL v5.0 ແລະ
ໃໝ່ກວ່າ) ຖ້າ "--[no]create-views" ເປັນຄວາມຈິງ (ມັນເປັນຄ່າເລີ່ມຕົ້ນ). ຊື່ເບິ່ງແມ່ນ
ສະຕຣິງຫຼັງຈາກຄຳນຳໜ້າ "MAGIC_view_".
ຄໍາຖາມ: ຄໍາຖາມທີ່ບາງຄັ້ງໃຊ້ດັດສະນີທີ່ແຕກຕ່າງກັນ, ແລະສ່ວນຫນຶ່ງຂອງເວລາໃດ
ແຕ່ລະດັດຊະນີຖືກເລືອກບໍ? MAGIC_view_query_uses_several_indexes:
SELECT iu.query_id, CONCAT_WS('.', iu.db, iu.tbl, iu.idx) AS idx,
ການປ່ຽນແປງ, iu.cnt, iu.cnt / total_cnt * 100 AS pct
ຈາກ index_usage AS iu
ເຂົ້າຮ່ວມພາຍໃນ (
SELECT query_id, db, tbl, SUM(cnt) AS total_cnt,
COUNT(*) AS ການປ່ຽນແປງ
ຈາກ index_usage
ກຸ່ມໂດຍ query_id, db, tbl
ມີ COUNT(*) > 1
) AS qv USING(query_id, db, tbl);
ຄໍາຖາມ: ດັດສະນີໃດທີ່ມີທາງເລືອກຫຼາຍ, ຫມາຍຄວາມວ່າແມ່ນເລືອກແທນອັນອື່ນ
ດັດສະນີ, ແລະສໍາລັບການສອບຖາມອັນໃດ? MAGIC_view_index_has_alternates:
SELECT CONCAT_WS('.', db, tbl, idx) AS idx_chosen,
GROUP_CONCAT(DISTINCT alt_idx) ເປັນທາງເລືອກ,
GROUP_CONCAT(DISTINCT query_id) AS queries, SUM(cnt) AS cnt
ຈາກ index_alternatives
ກຸ່ມໂດຍ db, tbl, idx
ມີ COUNT(*) > 1;
ຄໍາຖາມ: ດັດຊະນີໃດຖືກພິຈາລະນາເປັນຕົວສະຫຼັບສໍາລັບດັດສະນີອື່ນໆ, ແລະສໍາລັບຫຍັງ
ສອບຖາມ? MAGIC_view_index_alternates:
SELECT CONCAT_WS('.', db, tbl, alt_idx) AS idx_considered,
GROUP_CONCAT(DISTINCT idx) AS alternative_to,
GROUP_CONCAT(DISTINCT query_id) AS queries, SUM(cnt) AS cnt
ຈາກ index_alternatives
ກຸ່ມໂດຍ db, tbl, alt_idx
ມີ COUNT(*) > 1;
ຄໍາຖາມ: ອັນໃດທີ່ບໍ່ເຄີຍຖືກເລືອກໂດຍການສອບຖາມໃດໆ, ແລະດັ່ງນັ້ນ
superfluous? MAGIC_view_unused_index_alternates:
SELECT CONCAT_WS('.', i.db, i.tbl, i.idx) AS idx,
alt.alternative_to, alt.queries, alt.cnt
ຈາກດັດຊະນີ AS i
ເຂົ້າຮ່ວມພາຍໃນ (
SELECT db, tbl, alt_idx, GROUP_CONCAT(DISTINCT idx) AS alternative_to,
GROUP_CONCAT(DISTINCT query_id) AS queries, SUM(cnt) AS cnt
ຈາກ index_alternatives
ກຸ່ມໂດຍ db, tbl, alt_idx
ມີ COUNT(*) > 1
) AS alt ON i.db = alt.db ແລະ i.tbl = alt.tbl
ແລະ i.idx = alt.alt_idx
ບ່ອນທີ່ i.cnt = 0;
ຄໍາຖາມ: ໄດ້ໃຫ້ຕາຕະລາງ, ດັດຊະນີໃດຖືກນໍາໃຊ້, ໂດຍຈໍານວນຄໍາຖາມ, ມີຈໍານວນເທົ່າໃດ
ລາຍນິ້ວມືທີ່ແຕກຕ່າງ? ມີທາງເລືອກອື່ນບໍ່? ດັດຊະນີໃດທີ່ບໍ່ໄດ້ໃຊ້? ເຈົ້າ
ສາມາດແກ້ໄຂລາຍການ SELECT ຂອງຄິວຣີຕໍ່ໄປນີ້ເພື່ອເບິ່ງ ID ຄໍາຖາມ.
MAGIC_view_index_usage:
SELECT i.idx, iu.usage_cnt, iu.usage_total,
ia.alt_cnt, ia.alt_total
ຈາກດັດຊະນີ AS i
ເຂົ້າຮ່ວມທາງນອກຊ້າຍ (
SELECT db, tbl, idx, COUNT(*) AS use_cnt,
SUM(cnt) AS use_total, GROUP_CONCAT(query_id) AS used_by
ຈາກ index_usage
ກຸ່ມໂດຍ db, tbl, idx
) AS iu ON i.db=iu.db ແລະ i.tbl=iu.tbl ແລະ i.idx = iu.idx
ເຂົ້າຮ່ວມທາງນອກຊ້າຍ (
SELECT db, tbl, idx, COUNT(*) AS alt_cnt,
SUM(cnt) AS alt_total,
GROUP_CONCAT(query_id) AS alt_queries
ຈາກ index_alternatives
ກຸ່ມໂດຍ db, tbl, idx
) AS ia ON i.db=ia.db AND i.tbl=ia.tbl AND i.idx = ia.idx;
ຄໍາຖາມ: ດັດສະນີໃດໃນຕາຕະລາງທີ່ໃຫ້ແມ່ນສໍາຄັນສໍາລັບການສອບຖາມຢ່າງຫນ້ອຍຫນຶ່ງ (ບໍ່ມີ.
ທາງເລືອກ)? MAGIC_view_required_indexes:
ເລືອກ i.db, i.tbl, i.idx, no_alt.queries
ຈາກດັດຊະນີ AS i
ເຂົ້າຮ່ວມພາຍໃນ (
ເລືອກ iu.db, iu.tbl, iu.idx,
GROUP_CONCAT(iu.query_id) AS ສອບຖາມ
ຈາກ index_usage AS iu
ຊ້າຍພາຍນອກເຂົ້າຮ່ວມ index_alternatives AS ia
ໃຊ້(db, tbl, idx)
ບ່ອນທີ່ ia.db ເປັນ NULL
ກຸ່ມໂດຍ iu.db, iu.tbl, iu.idx
) AS no_alt ON no_alt.db = i.db AND no_alt.tbl = i.tbl
AND no_alt.idx = i.idx
ORDER BY i.db, i.tbl, i.idx, no_alt.queries;
--set-vars
ປະເພດ: Array
ກໍານົດຕົວແປ MySQL ໃນບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຄູ່ "variable=value".
ໂດຍຄ່າເລີ່ມຕົ້ນ, ເຄື່ອງມືກໍານົດ:
wait_timeout=10000
ຕົວແປທີ່ລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງ override ຄ່າເລີ່ມຕົ້ນເຫຼົ່ານີ້. ຍົກຕົວຢ່າງ,
ການລະບຸ "--set-vars wait_timeout=500" ລົບລ້າງຄ່າເລີ່ມຕົ້ນຂອງ 10000.
ເຄື່ອງມືພິມຄໍາເຕືອນແລະສືບຕໍ່ຖ້າຫາກວ່າຕົວປ່ຽນແປງບໍ່ສາມາດໄດ້ຮັບການຕັ້ງຄ່າ.
--ຊັອກເກັດ
ຮູບແບບສັ້ນ: -S; ປະເພດ: string
ໄຟລ໌ socket ໃຊ້ສໍາລັບການເຊື່ອມຕໍ່.
--ຕາຕະລາງ
ຮູບແບບສັ້ນ: -t; ປະເພດ: hash
ພຽງແຕ່ໄດ້ຮັບດັດຊະນີຈາກບັນຊີລາຍຊື່ຕາຕະລາງທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ.
--tables-regex
ປະເພດ: string
ພຽງແຕ່ໄດ້ຮັບດັດສະນີຈາກຕາຕະລາງທີ່ມີຊື່ກົງກັບ Perl regex ນີ້.
-ຜູ້ໃຊ້
ຮູບແບບສັ້ນ: -u; ປະເພດ: string
ຜູ້ໃຊ້ສໍາລັບການເຂົ້າສູ່ລະບົບຖ້າບໍ່ແມ່ນຜູ້ໃຊ້ປະຈຸບັນ.
- ການປ່ຽນແປງ
ສະແດງສະບັບແລະອອກ.
--[ບໍ່ມີການກວດສອບສະບັບ
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ກວດເບິ່ງເວີຊັນຫຼ້າສຸດຂອງ Percona Toolkit, MySQL, ແລະໂຄງການອື່ນໆ.
ນີ້ແມ່ນມາດຕະຖານ "ກວດສອບການປັບປຸງອັດຕະໂນມັດ" ຄຸນນະສົມບັດ, ມີສອງເພີ່ມເຕີມ
ຄຸນລັກສະນະ. ຫນ້າທໍາອິດ, ເຄື່ອງມືກວດສອບສະບັບຂອງບັນດາໂຄງການອື່ນໆໃນລະບົບທ້ອງຖິ່ນໃນ
ນອກຈາກສະບັບຂອງຕົນເອງ. ຕົວຢ່າງ, ມັນກວດເບິ່ງເວີຊັນຂອງທຸກເຄື່ອງແມ່ຂ່າຍ MySQL
ມັນເຊື່ອມຕໍ່ກັບ, Perl, ແລະໂມດູນ Perl DBD::mysql. ອັນທີສອງ, ມັນກວດເບິ່ງແລະເຕືອນ
ກ່ຽວກັບສະບັບທີ່ມີບັນຫາທີ່ຮູ້ຈັກ. ຕົວຢ່າງ, MySQL 5.5.25 ມີ bug ທີ່ສໍາຄັນແລະ
ໄດ້ຖືກປ່ອຍອອກມາເມື່ອ 5.5.25a.
ການອັບເດດ ຫຼືບັນຫາທີ່ຮູ້ຈັກຈະຖືກພິມໃສ່ STDOUT ກ່ອນທີ່ເຄື່ອງມືຈະອອກມາປົກກະຕິ.
ຄຸນສົມບັດນີ້ບໍ່ຄວນລົບກວນການເຮັດວຽກປົກກະຕິຂອງເຄື່ອງມື.
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ໄປຢ້ຽມຢາມ .
DSN OPTIONS
ຕົວເລືອກ DSN ເຫຼົ່ານີ້ຖືກໃຊ້ເພື່ອສ້າງ DSN. ແຕ່ລະທາງເລືອກແມ່ນໃຫ້ຄື "option=value".
ຕົວເລືອກແມ່ນຕົວພິມນ້ອຍ, ດັ່ງນັ້ນ P ແລະ p ບໍ່ແມ່ນທາງເລືອກດຽວກັນ. ບໍ່ສາມາດມີ
ຊ່ອງຫວ່າງກ່ອນ ຫຼືຫຼັງ "=" ແລະຖ້າຄ່າມີຊ່ອງຫວ່າງມັນຈະຕ້ອງຖືກອ້າງອີງ.
ຕົວເລືອກ DSN ແມ່ນຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ. ເບິ່ງ manpage percona-toolkit ສໍາລັບລາຍລະອຽດເຕັມ.
ກ
dsn: charset; ສຳເນົາ: ແມ່ນແລ້ວ
ຕັ້ງຕົວອັກສອນເລີ່ມຕົ້ນ.
·ດ
dsn: ຖານຂໍ້ມູນ; ສຳເນົາ: ແມ່ນແລ້ວ
ຖານຂໍ້ມູນທີ່ຈະເຊື່ອມຕໍ່ກັບ.
· F
dsn: mysql_read_default_file; ສຳເນົາ: ແມ່ນແລ້ວ
ອ່ານພຽງແຕ່ຕົວເລືອກເລີ່ມຕົ້ນຈາກໄຟລ໌ທີ່ໃຫ້
h
dsn: ເຈົ້າພາບ; ສຳເນົາ: ແມ່ນແລ້ວ
ເຊື່ອມຕໍ່ຫາເຈົ້າພາບ.
· ປ
dsn: ລະຫັດຜ່ານ; ສຳເນົາ: ແມ່ນແລ້ວ
ລະຫັດຜ່ານທີ່ຈະໃຊ້ໃນເວລາເຊື່ອມຕໍ່. ຖ້າລະຫັດຜ່ານມີເຄື່ອງໝາຍຈຸດ, ພວກມັນຈະຕ້ອງຖືກຫລົບໜີ
ກັບ backslash: "ການສອບເສັງ, ple"
·ປ
dsn: ພອດ; ສຳເນົາ: ແມ່ນແລ້ວ
ໝາຍເລກພອດເພື່ອໃຊ້ສຳລັບການເຊື່ອມຕໍ່.
·ສ
dsn: mysql_socket; ສຳເນົາ: ແມ່ນແລ້ວ
ໄຟລ໌ socket ໃຊ້ສໍາລັບການເຊື່ອມຕໍ່.
· ເຈົ້າ
dsn: ຜູ້ໃຊ້; ສຳເນົາ: ແມ່ນແລ້ວ
ຜູ້ໃຊ້ສໍາລັບການເຂົ້າສູ່ລະບົບຖ້າບໍ່ແມ່ນຜູ້ໃຊ້ປະຈຸບັນ.
ENVIRONMENT
ຕົວແປສະພາບແວດລ້ອມ "PTDEBUG" ເປີດໃຊ້ຜົນການແກ້ບັນຫາ verbose ໄປຫາ STDERR. ເພື່ອເປີດໃຊ້ງານ
debugging ແລະເກັບກໍາຜົນຜະລິດທັງຫມົດໄປຍັງໄຟລ໌, ດໍາເນີນການເຄື່ອງມືເຊັ່ນ:
PTDEBUG=1 pt-index-usage ... > FILE 2 >&1
ຈົ່ງລະວັງ: ການດີບັ໊ກຜົນອອກແມ່ນ voluminous ແລະສາມາດສ້າງຜົນຜະລິດຫຼາຍ megabytes.
SYSTEM ສິ່ງທີ່ຕ້ອງມີ
ທ່ານຕ້ອງການ Perl, DBI, DBD::mysql, ແລະບາງແພັກເກັດຫຼັກທີ່ຄວນຈະຖືກຕິດຕັ້ງຢູ່ໃນໃດກໍ່ຕາມ.
ສະບັບໃຫມ່ທີ່ສົມເຫດສົມຜົນຂອງ Perl.
ໃຊ້ pt-index-usagep ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net