ວິທີທີ່ CTRL-C ໃນ Postgres CLI ຍົກເລີກການສອບຖາມແມ່ນ hack-y ຢ່າງບໍ່ຫນ້າເຊື່ອ | Mewayz Blog Skip to main content
Hacker News

ວິທີທີ່ CTRL-C ໃນ Postgres CLI ຍົກເລີກການສອບຖາມແມ່ນ hack-y ຢ່າງບໍ່ຫນ້າເຊື່ອ

ຄຳເຫັນ

2 min read Via neon.com

Mewayz Team

Editorial Team

Hacker News
<ຮ່າງກາຍ>

The Lingering Ghost of SIGINT: ເປັນຫຍັງການຍົກເລີກການສອບຖາມ Postgres CLI ຮູ້ສຶກຄືກັບການແຮັກ

ສຳ​ລັບ​ຜູ້​ພັດ​ທະ​ນາ​ແລະ​ຜູ້​ບໍ​ລິ​ຫານ​ຖານ​ຂໍ້​ມູນ, ການ​ໂຕ້​ຕອບ​ເສັ້ນ​ຄໍາ​ສັ່ງ PostgreSQL (psql) ເປັນ​ຄົນ​ຂັບ​ປະ​ຈໍາ​ວັນ​ທີ່​ເຊື່ອ​ຖື​ໄດ້. ມັນມີອໍານາດ, ຊັດເຈນ, ແລະຢູ່ທົ່ວທຸກແຫ່ງ. ຢ່າງໃດກໍຕາມ, ຫນຶ່ງໃນປະຕິສໍາພັນພື້ນຖານທີ່ສຸດຂອງຕົນ - ການຍົກເລີກການສອບຖາມ runaway ກັບທາງລັດ CTRL-C ທົ່ວໄປ - ຮູ້ສຶກແປກປະຫລາດ. ບໍ່ເຫມືອນກັບຄໍາຮ້ອງສະຫມັກທີ່ທັນສະໄຫມຈໍານວນຫຼາຍທີ່ຄໍາສັ່ງພຽງແຕ່ຢຸດເຊົາການດໍາເນີນການໃນປະຈຸບັນ, ໃນ psql, CTRL-C ຕົວຈິງແລ້ວບໍ່ໄດ້ຍົກເລີກການສອບຖາມໃນເຄື່ອງແມ່ຂ່າຍ. ແທນທີ່ຈະ, ມັນຍົກເລີກ ການລໍຖ້າຂອງລູກຄ້າ ສໍາລັບຜົນໄດ້ຮັບ, ເຮັດໃຫ້ການສອບຖາມທີ່ອາດຈະເກີດຂຶ້ນກັບເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນ. ພຶດຕິກໍານີ້ບໍ່ແມ່ນແມງໄມ້; ມັນ​ເປັນ​ສິ່ງ​ປອມ​ທີ່​ອອກ​ແບບ​ທີ່​ເປີດ​ເຜີຍ​ສະ​ຖາ​ປັດ​ຕະ​ຍະ​ກຳ​ຂອງ​ເຄື່ອງ​ມື​ຂອງ​ພວກ​ເຮົາ​ເປັນ​ຊັ້ນ, ບາງ​ເທື່ອ​ກໍ​ອ່ອນ​ເພຍ. ສໍາລັບທຸລະກິດທີ່ສ້າງຂຶ້ນໃນລະບົບໂມດູລາເຊັ່ນ Mewayz, ຄວາມເຂົ້າໃຈໃນຄວາມເປັນຈິງເຫຼົ່ານີ້ເປັນກຸນແຈສໍາຄັນໃນການອອກແບບຊັ້ນປະຕິບັດການທີ່ເຂັ້ມແຂງ, ຜູ້ໃຊ້ເປັນໃຈກາງ.

ເລື່ອງຂອງສອງຂະບວນການ: ລູກຄ້າທຽບກັບເຊີບເວີ

ຫຼັກຂອງຄວາມຮູ້ສຶກ "hack-y" ມາຈາກສະຖາປັດຕະຍະກຳຂອງ psql. ເມື່ອທ່ານປະຕິບັດການສອບຖາມໃນ psql, ສອງຂະບວນການເອກະລາດແມ່ນເຮັດວຽກ: ຂະບວນການລູກຄ້າ psql ໃນເຄື່ອງທ້ອງຖິ່ນຂອງທ່ານແລະຂະບວນການເຊີຟເວີ postgres ໃນໂຮດຖານຂໍ້ມູນ. ການກົດ CTRL-C ຈະສົ່ງ SIGINT (ສັນຍານລົບກວນ) ໂດຍສະເພາະໄປຫາ psql client process. ວຽກງານທັນທີຂອງລູກຄ້າແມ່ນການຢຸດເຊົາການລໍຖ້າແລະກັບຄືນໄປຫາການກະຕຸ້ນເຕືອນ, ເຊິ່ງມັນເຮັດ. ຢ່າງໃດກໍ່ຕາມ, ເຊີບເວີບໍ່ມີຄວາມຮູ້ກ່ຽວກັບສັນຍານຂ້າງລູກຄ້ານີ້. ຈາກທັດສະນະຂອງມັນ, ການສອບຖາມຍັງຄົງເປັນການດໍາເນີນງານທີ່ຖືກຕ້ອງ. ການຮ້ອງຂໍການຍົກເລີກຕ້ອງໄດ້ຮັບການສື່ສານເປັນຄໍາແນະນໍາໃຫມ່ແຍກຕ່າງຫາກ.

"CTRL-C ໃນ psql ແມ່ນຫນ້ອຍຂອງປຸ່ມ 'ຢຸດ' ແລະຫຼາຍກວ່າ 'ກະລຸນາບໍ່ສົນໃຈຄໍາຮ້ອງຂໍທີ່ຜ່ານມາຂອງຂ້ອຍ' ສັງເກດວ່າເຈົ້າຍື່ນມືໄປຫາຫ້ອງສະຫມຸດທີ່ຫຍຸ້ງຢູ່ໃນຂະນະທີ່ພວກເຂົາມາຮອດເຄິ່ງຫນຶ່ງຂອງ stacks."

ໂປຣໂຕຄອນການຍົກເລີກ: ຄຳຮ້ອງຂໍສຳຮອງ

ດັ່ງນັ້ນ, ການສອບຖາມຕົວຈິງຖືກຍົກເລີກແນວໃດ? ຫຼັງຈາກການຈັດການ SIGINT, ລູກຄ້າ psql ທີ່ມີພຶດຕິກໍາທີ່ດີໄດ້ລິເລີ່ມໂປໂຕຄອນການຍົກເລີກຢ່າງເປັນທາງການຂອງ PostgreSQL. ນີ້ກ່ຽວຂ້ອງກັບການເປີດ ການເຊື່ອມຕໍ່ໃຫມ່ ກັບເຄື່ອງແມ່ຂ່າຍແລະການສົ່ງຂໍ້ຄວາມພິເສດ "ຍົກເລີກການຮ້ອງຂໍ" ທີ່ມີລະຫັດລັບທີ່ກໍານົດຂະບວນການ backend ສະເພາະທີ່ດໍາເນີນການສອບຖາມຂອງທ່ານ. ການຮ້ອງຂໍນີ້ຖືກດໍາເນີນການໂດຍມີບູລິມະສິດຕໍ່າ, ແລະບໍ່ມີການຮັບປະກັນຜົນສໍາເລັດໃນທັນທີ. ຂະບວນການຫຼາຍຂັ້ນຕອນ, ໄຟແລະລືມນີ້ແມ່ນວ່າເປັນຫຍັງພຶດຕິກໍາມີຄວາມຮູ້ສຶກທາງອ້ອມ. ມັນບໍ່ແມ່ນການຂັດຂວາງໂດຍກົງ; ມັນ​ເປັນ​ຄຳ​ອ້ອນວອນ​ທີ່​ສຸພາບ​ແລະ​ບໍ່​ກົງ​ກັນ​ທີ່​ສົ່ງ​ຜ່ານ​ຊ່ອງ​ທາງ​ຫຼັງ.

ຊ່ອງຫວ່າງປະສົບການຂອງຜູ້ໃຊ້ ແລະກໍລະນີຂອບ

ການ​ອອກ​ແບບ​ນີ້​ເຮັດ​ໃຫ້​ມີ​ຈຸດ​ຂັດ​ແຍ້ງ​ທີ່​ຈັບ​ໄດ້​ຫຼາຍ​ຈຸດ​ສໍາ​ລັບ​ຜູ້​ໃຊ້:

  • ຮັບຮູ້ຄວາມບໍ່ຕອບສະໜອງ: ທ່ານກົດ CTRL-C, ໄດ້ຮັບການເຕືອນຂອງທ່ານຄືນມາທັນທີ, ແຕ່ການໂຫຼດຂອງລະບົບຍັງສູງຢູ່ ເພາະວ່າເຊີບເວີຍັງເຮັດວຽກຢູ່.
  • ຜົນໄດ້ຮັບທີ່ບໍ່ແນ່ນອນ: ທ່ານບໍ່ມີການຢືນຢັນໃນທັນທີຖ້າການຮ້ອງຂໍການຍົກເລີກນັ້ນໄດ້ຮັບ ຫຼືໃຫ້ກຽດຈາກເຊີບເວີ.
  • Connection-Dependent Failure: ຖ້າເຊີບເວີຖືກໄຟວໍ ຫຼືການເຊື່ອມຕໍ່ໃໝ່ສຳລັບການຮ້ອງຂໍການຍົກເລີກລົ້ມເຫລວ, ພະນັກງານການສອບຖາມຕົ້ນສະບັບຈະບໍ່ມີກຳນົດ.
  • ບໍ່ກົງກັນທາງຈິດວິທະຍາ: ຄໍາສັ່ງ "abort" ທົ່ວໄປບໍ່ໄດ້ປະຕິບັດການຍົກເລີກແບບ synchronous, ທໍາລາຍຄວາມຄາດຫວັງຂອງຜູ້ໃຊ້ທີ່ສ້າງຂຶ້ນໃນບ່ອນອື່ນໃນສະພາບແວດລ້ອມຄອມພິວເຕີ້.

ການສ້າງພື້ນຖານຄວາມຮູ້ກັບ Mewayz

ລະບົບ​ການ​ດຳ​ເນີນ​ທຸລະ​ກິດ​ທີ່​ທັນ​ສະ​ໄໝ​ຕ້ອງ​ລົບ​ລ້າງ​ຄວາມ​ຊັບຊ້ອນ​ທີ່​ເປັນ​ພື້ນຖານ​ເຫຼົ່າ​ນີ້ ​ໃນ​ຂະນະ​ທີ່​ເຄົາລົບ​ຂໍ້​ຈຳກັດ​ຂອງ​ມັນ. ແພລດຟອມເຊັ່ນ Mewayz, ເຮັດໜ້າທີ່ເປັນລະບົບທຸລະກິດແບບໂມດູລາ, ຈະຫຸ້ມຫໍ່ການໂຕ້ຕອບຂອງຖານຂໍ້ມູນພາຍໃນໂມດູນບໍລິການທີ່ມີການຈັດການ. ສໍາລັບຕົວຢ່າງ, ໂມດູນການສອບຖາມຂໍ້ມູນ Mewayz ບໍ່ພຽງແຕ່ເປີດເຜີຍການເຕືອນ SQL ດິບ; ມັນຈະຫໍ່ມັນດ້ວຍການຄວບຄຸມທີ່ເປັນມິດກັບຜູ້ໃຊ້ - ປຸ່ມ "ຢຸດ" ທີ່ແທ້ຈິງ, ການກວດສອບໄດ້, ການຫມົດເວລາຂອງຄໍາຖາມ, ແລະ dashboards ສະຖານະເວລາຈິງທີ່ສະແດງໃຫ້ເຫັນສິ່ງທີ່ເຮັດວຽກຢູ່ໃນເຄື່ອງແມ່ຂ່າຍ. ນີ້ຍ້າຍປະສົບການຈາກການຈັດການກັບ quirks ໂປໂຕຄອນໄປສູ່ການຄຸ້ມຄອງການດໍາເນີນທຸລະກິດທີ່ຊັດເຈນ, ສາມາດປະຕິບັດໄດ້. ບົດຮຽນຈາກ CTRL-C ຂອງ psql ແມ່ນວ່າເຄື່ອງມືທີ່ຍິ່ງໃຫຍ່ບໍ່ພຽງແຕ່ເປີດເຜີຍຄວາມສາມາດທີ່ມີປະສິດທິພາບ; ພວກເຂົາເຈົ້າອອກແບບການໂຕ້ຕອບ intuitive ແລະເຊື່ອຖືໄດ້ສໍາລັບພວກເຂົາ, ປ່ຽນມໍລະດົກທາງສະຖາປັດຕະເປັນ workflows seamless. ຄວາມເຂົ້າໃຈກ່ຽວກັບການ hack ເປີດເຜີຍໃຫ້ເຫັນໂອກາດທີ່ຈະສ້າງບາງສິ່ງບາງຢ່າງທີ່ດີກວ່າ.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

ຄຳຖາມທີ່ຖາມເລື້ອຍໆ

The Lingering Ghost of SIGINT: ເປັນຫຍັງການຍົກເລີກການສອບຖາມ Postgres CLI ຮູ້ສຶກຄືກັບການແຮັກ

ສຳ​ລັບ​ຜູ້​ພັດ​ທະ​ນາ​ແລະ​ຜູ້​ບໍ​ລິ​ຫານ​ຖານ​ຂໍ້​ມູນ, ການ​ໂຕ້​ຕອບ​ເສັ້ນ​ຄໍາ​ສັ່ງ PostgreSQL (psql) ເປັນ​ຄົນ​ຂັບ​ປະ​ຈໍາ​ວັນ​ທີ່​ເຊື່ອ​ຖື​ໄດ້. ມັນມີອໍານາດ, ຊັດເຈນ, ແລະຢູ່ທົ່ວທຸກແຫ່ງ. ຢ່າງໃດກໍຕາມ, ຫນຶ່ງໃນປະຕິສໍາພັນພື້ນຖານທີ່ສຸດຂອງຕົນ - ການຍົກເລີກການສອບຖາມ runaway ກັບທາງລັດ CTRL-C ທົ່ວໄປ - ຮູ້ສຶກແປກປະຫລາດ. ບໍ່ເຫມືອນກັບຄໍາຮ້ອງສະຫມັກທີ່ທັນສະໄຫມຈໍານວນຫຼາຍທີ່ຄໍາສັ່ງພຽງແຕ່ຢຸດເຊົາການດໍາເນີນການໃນປະຈຸບັນ, ໃນ psql, CTRL-C ຕົວຈິງແລ້ວບໍ່ໄດ້ຍົກເລີກການສອບຖາມໃນເຄື່ອງແມ່ຂ່າຍ. ແທນທີ່ຈະ, ມັນຍົກເລີກການລໍຖ້າຂອງລູກຄ້າສໍາລັບຜົນໄດ້ຮັບ, ອອກຈາກການສອບຖາມທີ່ອາດຈະເກີດຂຶ້ນໃນເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນ. ພຶດຕິກໍານີ້ບໍ່ແມ່ນແມງໄມ້; ມັນ​ເປັນ​ສິ່ງ​ປອມ​ທີ່​ອອກ​ແບບ​ທີ່​ເປີດ​ເຜີຍ​ສະ​ຖາ​ປັດ​ຕະ​ຍະ​ກຳ​ຂອງ​ເຄື່ອງ​ມື​ຂອງ​ພວກ​ເຮົາ​ເປັນ​ຊັ້ນ, ບາງ​ເທື່ອ​ກໍ​ອ່ອນ​ເພຍ. ສໍາລັບທຸລະກິດທີ່ສ້າງລະບົບໂມດູລາເຊັ່ນ Mewayz, ການເຂົ້າໃຈຄວາມເປັນຈິງພື້ນຖານເຫຼົ່ານີ້ແມ່ນກຸນແຈສໍາຄັນໃນການອອກແບບຊັ້ນການດໍາເນີນງານທີ່ເຂັ້ມແຂງ, ຜູ້ໃຊ້ເປັນສູນກາງ.

ເລື່ອງຂອງສອງຂະບວນການ: ລູກຄ້າທຽບກັບເຊີບເວີ

ຫຼັກຂອງຄວາມຮູ້ສຶກ "hack-y" ມາຈາກສະຖາປັດຕະຍະກຳຂອງ psql. ເມື່ອທ່ານປະຕິບັດການສອບຖາມໃນ psql, ສອງຂະບວນການເອກະລາດແມ່ນເຮັດວຽກ: ຂະບວນການລູກຄ້າ psql ໃນເຄື່ອງທ້ອງຖິ່ນຂອງທ່ານແລະຂະບວນການເຊີຟເວີ postgres ໃນໂຮດຖານຂໍ້ມູນ. ກົດ CTRL-C ສົ່ງ SIGINT (ສັນຍານລົບກວນ) ໂດຍສະເພາະກັບຂະບວນການລູກຄ້າ psql. ວຽກງານທັນທີຂອງລູກຄ້າແມ່ນການຢຸດເຊົາການລໍຖ້າແລະກັບຄືນໄປຫາການກະຕຸ້ນເຕືອນ, ເຊິ່ງມັນເຮັດ. ຢ່າງໃດກໍ່ຕາມ, ເຊີບເວີບໍ່ມີຄວາມຮູ້ກ່ຽວກັບສັນຍານຂ້າງລູກຄ້ານີ້. ຈາກທັດສະນະຂອງມັນ, ການສອບຖາມຍັງຄົງເປັນການດໍາເນີນງານທີ່ຖືກຕ້ອງ. ການຮ້ອງຂໍການຍົກເລີກຕ້ອງໄດ້ຮັບການສື່ສານເປັນຄໍາແນະນໍາໃຫມ່ແຍກຕ່າງຫາກ.

ໂປຣໂຕຄອນການຍົກເລີກ: ຄຳຮ້ອງຂໍສຳຮອງ

ດັ່ງນັ້ນ, ການສອບຖາມຕົວຈິງຖືກຍົກເລີກແນວໃດ? ຫຼັງຈາກການຈັດການ SIGINT, ລູກຄ້າ psql ທີ່ມີພຶດຕິກໍາທີ່ດີໄດ້ລິເລີ່ມໂປໂຕຄອນການຍົກເລີກຢ່າງເປັນທາງການຂອງ PostgreSQL. ນີ້ກ່ຽວຂ້ອງກັບການເປີດການເຊື່ອມຕໍ່ໃຫມ່ກັບເຄື່ອງແມ່ຂ່າຍແລະການສົ່ງຂໍ້ຄວາມພິເສດ "ການຮ້ອງຂໍຍົກເລີກ" ທີ່ມີລະຫັດລັບທີ່ກໍານົດຂະບວນການ backend ສະເພາະທີ່ດໍາເນີນການສອບຖາມຂອງທ່ານ. ການຮ້ອງຂໍນີ້ຖືກດໍາເນີນການໂດຍມີບູລິມະສິດຕໍ່າ, ແລະບໍ່ມີການຮັບປະກັນຜົນສໍາເລັດໃນທັນທີ. ຂະບວນການຫຼາຍຂັ້ນຕອນ, ໄຟແລະລືມນີ້ແມ່ນວ່າເປັນຫຍັງພຶດຕິກໍາມີຄວາມຮູ້ສຶກທາງອ້ອມ. ມັນບໍ່ແມ່ນການຂັດຂວາງໂດຍກົງ; ມັນ​ເປັນ​ຄຳ​ອ້ອນວອນ​ທີ່​ສຸພາບ​ແລະ​ບໍ່​ກົງ​ກັນ​ທີ່​ສົ່ງ​ຜ່ານ​ຊ່ອງ​ທາງ​ຫຼັງ.

ຊ່ອງຫວ່າງປະສົບການຂອງຜູ້ໃຊ້ ແລະກໍລະນີຂອບ

ການ​ອອກ​ແບບ​ນີ້​ເຮັດ​ໃຫ້​ມີ​ຈຸດ​ຂັດ​ແຍ້ງ​ທີ່​ຈັບ​ໄດ້​ຫຼາຍ​ຈຸດ​ສໍາ​ລັບ​ຜູ້​ໃຊ້:

ການສ້າງພື້ນຖານຄວາມຮູ້ກັບ Mewayz

ລະບົບ​ການ​ດຳ​ເນີນ​ທຸລະ​ກິດ​ທີ່​ທັນ​ສະ​ໄໝ​ຕ້ອງ​ລົບ​ລ້າງ​ຄວາມ​ຊັບຊ້ອນ​ທີ່​ເປັນ​ພື້ນຖານ​ເຫຼົ່າ​ນີ້ ​ໃນ​ຂະນະ​ທີ່​ເຄົາລົບ​ຂໍ້​ຈຳກັດ​ຂອງ​ມັນ. ແພລະຕະຟອມເຊັ່ນ Mewayz, ເຮັດຫນ້າທີ່ເປັນ OS ທຸລະກິດແບບໂມດູນ, ຈະຫຸ້ມຫໍ່ການໂຕ້ຕອບຖານຂໍ້ມູນພາຍໃນໂມດູນການບໍລິການທີ່ມີການຄຸ້ມຄອງ. ສໍາລັບຕົວຢ່າງ, ໂມດູນການສອບຖາມຂໍ້ມູນ Mewayz ບໍ່ພຽງແຕ່ເປີດເຜີຍການເຕືອນ SQL ດິບ; ມັນຈະຫໍ່ມັນດ້ວຍການຄວບຄຸມທີ່ເປັນມິດກັບຜູ້ໃຊ້ - ປຸ່ມ "ຢຸດ" ທີ່ແທ້ຈິງ, ການກວດສອບໄດ້, ການຫມົດເວລາຂອງຄໍາຖາມ, ແລະ dashboards ສະຖານະເວລາຈິງທີ່ສະແດງໃຫ້ເຫັນສິ່ງທີ່ເຮັດວຽກຢູ່ໃນເຄື່ອງແມ່ຂ່າຍ. ນີ້ຍ້າຍປະສົບການຈາກການຈັດການກັບ quirks ໂປໂຕຄອນໄປສູ່ການຄຸ້ມຄອງການດໍາເນີນທຸລະກິດທີ່ຊັດເຈນ, ສາມາດປະຕິບັດໄດ້. ບົດຮຽນຈາກ CTRL-C ຂອງ psql ແມ່ນວ່າເຄື່ອງມືທີ່ຍິ່ງໃຫຍ່ບໍ່ພຽງແຕ່ເປີດເຜີຍຄວາມສາມາດທີ່ມີປະສິດທິພາບ; ພວກເຂົາເຈົ້າອອກແບບການໂຕ້ຕອບ intuitive ແລະເຊື່ອຖືໄດ້ສໍາລັບພວກເຂົາ, ປ່ຽນມໍລະດົກທາງສະຖາປັດຕະເປັນ workflows seamless. ຄວາມເຂົ້າໃຈກ່ຽວກັບການ hack ເປີດເຜີຍໃຫ້ເຫັນໂອກາດທີ່ຈະສ້າງບາງສິ່ງບາງຢ່າງທີ່ດີກວ່າ.

ເຄື່ອງມືທຸລະກິດຂອງທ່ານທັງໝົດຢູ່ບ່ອນດຽວ

ຢຸດການຫຼີ້ນເກມຫຼາຍແອັບ. Mewayz ລວມ 208 ເຄື່ອງ​ມື​ສໍາ​ລັບ​ພຽງ​ແຕ່ $49/ເດືອນ — ຈາກ​ສາງ​ເຖິງ HR, ການ​ຈອງ​ກັບ​ການ​ວິ​ເຄາະ. ບໍ່ຈຳເປັນຕ້ອງມີບັດເຄຣດິດເພື່ອເລີ່ມຕົ້ນ.

ລອງໃຊ້ Mewayz ຟຣີ →