การเปิดและปิดการเชื่อมต่อฐานข้อมูลมีค่าใช้จ่ายเท่าใด


15

ซีพียูเข้มข้นเปิดและปิดการเชื่อมต่อฐานข้อมูล (สำหรับเว็บแอป) ใน MySQL อย่างไร

  • ... เมื่อซอฟต์แวร์ DB อยู่บน localhost
  • ... เมื่อซอฟต์แวร์ DB อยู่ในเครื่องอื่น

คำตอบ:


12

คิดเกี่ยวกับจำนวนหน่วยความจำที่ถูกจัดสรรต่อการเชื่อมต่อฐานข้อมูล สิ่งที่จะต้องจัดสรร? ตามคู่มือการศึกษาการรับรอง MySQL 5.0, หน้า 357 :

เซิร์ฟเวอร์จะเก็บบัฟเฟอร์ไว้หลายตัวสำหรับการเชื่อมต่อลูกค้าแต่ละครั้ง หนึ่งถูกใช้เป็นบัฟเฟอร์การสื่อสารสำหรับการแลกเปลี่ยนข้อมูลกับลูกค้า บัฟเฟอร์อื่น ๆ จะได้รับการดูแลต่อลูกค้าสำหรับการอ่านตารางและการดำเนินการเข้าร่วมและเรียงลำดับ

การตั้งค่าใดที่ควบคุมบัฟเฟอร์ต่อการเชื่อมต่อ

ใช้เวลาในการจัดสรรและยกเลิกการจัดสรรบัฟเฟอร์เหล่านี้เมื่อมีการเชื่อมต่อ อย่าลืมให้หลายผลรวมของค่าเหล่านั้นโดยmax_connections โปรดอย่าใช้mysql_pconnectเนื่องจากการเชื่อมต่อแบบต่อเนื่องของ PHP และ MySQL นั้นไม่สอดคล้องกัน นี่คือลิงก์ข้อมูลสองลิงก์ในหัวข้อนี้:

ในสภาพแวดล้อมที่หนักอ่านและเขียนหนักเช่น OLTP สิ่งนี้จะมีราคาแพงในแง่ของการใช้ RAM และการยับยั้งที่เป็นไปได้เนื่องจากการสลับในระบบปฏิบัติการ บนเว็บไซต์ low-write ที่ low_read ฉันไม่ต้องกังวลอะไรมาก


10

ฉันไม่แน่ใจว่ามันสำคัญแค่ไหน แน่นอนว่ามีค่าใช้จ่ายสูงกว่าการใช้การเชื่อมต่อเดียวกันอีกครั้ง สิ่งที่คุณจะสังเกตได้นั้นขึ้นอยู่กับว่าคุณใช้การรวมการเชื่อมต่ออย่างถูกต้องหรือไม่สระว่ายน้ำของคุณอิ่มตัวทรัพยากรที่มีอยู่ในกล่อง ฯลฯ อย่างไร

โดยทั่วไปถ้าคุณมีประสิทธิภาพห่วงจะทำปฏิสัมพันธ์กับฐานข้อมูลบางอย่างที่คุณจะไปได้ไกลดีกว่าอีกครั้งโดยใช้การเชื่อมต่อใช้งานเดียวกันกว่าการเปิดและปิดภายในวง (การต่อต้านรูปแบบที่ฉันเห็นค่อนข้างบ่อย) .


4

ภาวะที่กลืนไม่เข้าคายไม่ออกระหว่างการใช้วัตถุอีกครั้งและฉีกมันออกและสร้างมันขึ้นมาอีกครั้ง (ซึ่งทั้งคู่มีข้อดีและข้อเสีย) สามารถแก้ไขได้ด้วยการประนีประนอม: แคชวัตถุ แต่ในเวลา จำกัด (เช่นหมดอายุ) หากมีการเข้าถึงวัตถุบ่อยครั้งวัตถุจะถูกนำกลับมาใช้ใหม่ แต่ถ้ามันไม่ได้ถูกใช้มาระยะหนึ่งแล้วกลไกการหมดอายุก็จะปิดลงทำให้มันถูกสร้างขึ้นใหม่เมื่อมันต้องการอีกครั้ง

ระบบสามารถมี hook แบบโกลบอลสำหรับแคชประเภทนี้ซึ่งถูกเรียกใช้เมื่อหน่วยความจำเหลือน้อยซึ่งจะทำให้พวกมันทั้งหมดปล่อยวัตถุที่ไม่ได้ใช้งานเมื่อเร็ว ๆ นี้


2

Mysql แคชการเชื่อมต่อ (หรือเธรด) โดยใช้ Thread Cache (thread_cache_size) ค่าสูงสุดสำหรับมันคือ 100 เมื่อไคลเอ็นต์ปิดการเชื่อมต่อจะถูกส่งคืนไปยังแคช เมื่อการเชื่อมต่อใหม่เปิดขึ้นจะทำการตรวจสอบแคชเธรด ในระบบที่ยุ่งมากการเปิดการเชื่อมต่อแบบปิดอาจมีค่าใช้จ่ายสูง

https://dev.mysql.com/doc/refman/5.6/en/connection-threads.html หากคุณสามารถซื้อ Mysql Enterprise ได้คุณสามารถใช้ Thread Pool ปลั๊กอินที่ติดตั้งใน Mysql 5.6

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.