ในแอปพลิเคชันมัลติเธรดการปฏิบัติที่ดีคือการแยกส่วนประกอบของการเข้าถึงฐานข้อมูลการละเมิดการปฏิบัตินี้สามารถสร้าง ข้อผิดพลาด การละเมิดการเข้าถึงในข้อผิดพลาดอื่น ๆ เพื่อช่วยแก้ปัญหานี้ AMBARCHADERO ได้ให้ส่วนประกอบ, FDMANAGER ซึ่งรับผิดชอบใน การกำหนด และ การจัดการ การเชื่อมต่อและเป็น ความปลอดภัยของเธรด (การใช้งานที่ปลอดภัยในสภาพแวดล้อมแบบมัลติเธรด)
ที่มา: https://docwiki.embarcadero.com/radstudio/sydney/en/multithreading_(fiedac)
ข้อดีของการใช้ fdmanager
คำจำกัดความของไลบรารีลูกค้าเข้าถึงฐานข้อมูล [ไม่จำเป็น]
การรวมศูนย์ของการตั้งค่าการเชื่อมต่อด้วยฐานข้อมูล
การรวมศูนย์ของ parametrizations ของส่วนประกอบ TFDConnection (การกำหนดค่านี้ขยายไปถึงการเชื่อมต่อ FDConnection ทั้งหมดที่ใช้ในแอปพลิเคชัน)
นอกเหนือจากการใช้ FDMANGER วิธีปฏิบัติที่ดีและการใช้เทคนิคการเพิ่มประสิทธิภาพการเชื่อมต่อฐานข้อมูลที่เรียกว่า กลุ่มการเชื่อมต่อ
เมื่อเราจำเป็นต้องดำเนินการใด ๆ ในฐานข้อมูลมันเป็นสิ่งที่จำเป็นอย่างยิ่งในการสร้างการเชื่อมต่อกับมันการจัดตั้งการเชื่อมต่อนี้มักจะเกิดขึ้นผ่านโปรโตคอล TCP/IP ซึ่งเกี่ยวข้องกับค่าใช้จ่ายใน การเปิด และ ปิด การเชื่อมต่อ ค่าใช้จ่ายนี้มีความสำคัญอย่างยิ่งใน เว็บแอปพลิเคชัน ที่คุณสามารถมีการร้องขอคงที่นับพันและแต่ละครั้งจะสร้างการเปิดและปิดการเชื่อมต่อฐานข้อมูล เทคนิคง่ายๆในการหลีกเลี่ยงการเชื่อมต่อ "ร่วมเพศ" คงที่นี้คือการรักษาการเชื่อมต่อจำนวนหนึ่งเปิดอยู่เสมอ ( พูล การเชื่อมต่อ) และนำมาใช้ซ้ำเมื่อจำเป็นดังนั้นคุณจึงลดทรัพยากรของเครื่องและเวลาตอบสนองแอปพลิเคชันของคุณ
ค่าใช้จ่ายในการสร้างการเชื่อมต่อฐานข้อมูลสามารถเห็นได้ในภาพด้านล่างโดยใช้เครื่องมือ wireshark เราสามารถดูจำนวนแพ็กเก็ตที่ใช้ในการเลือกอย่างง่าย
เราสามารถเห็นได้ในภาพด้านล่างพฤติกรรมของการสืบค้นฐานข้อมูลโดยใช้การเชื่อมต่อพูล:
ในการกำหนดค่าพูลการเชื่อมต่อเราจะใช้ FDManager และคุณสมบัติพูล
| พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| ที่ได้ถูกรวมเข้าด้วยกัน | เปิดใช้งานพูลการเชื่อมต่อสำหรับการเชื่อมต่อกับชื่อที่ได้รับแจ้งใน fdmanager.connectationndefs ในการใช้พูลการเชื่อมต่อนิยามการเชื่อมต่อจะต้องคงอยู่หรือเป็นส่วนตัว | จริง |
| pool_cleanuptimeout | เวลาเป็นมิลลิวินาทีจนกระทั่ง FireDac ลบ การเชื่อมต่อที่ไม่ได้ใช้จนกว่าจะถึงเวลา pool_expiretimeout ค่าเริ่มต้นคือ 30000 ms (30 วินาที) | 15,000 มิลลิวินาที 15 S |
| pool_expiretimeout | เวลาเป็นมิลลิวินาทีหลังจากนั้น การเชื่อมต่อที่ไม่ได้ใช้งาน สามารถแยกออกจากสระว่ายน้ำและถูกทำลาย ค่าเริ่มต้นคือ 90000 ms (90 วินาที) | 60000 ms 60 S |
| pool_maximumemtes | จำนวนการเชื่อมต่อสูงสุดในพูล เมื่อแอปพลิเคชันต้องการการเชื่อมต่อมากขึ้นจะมีการสร้างข้อยกเว้น ค่าเริ่มต้นคือ 50 เมื่อถึงจำนวนการเชื่อมต่อทั้งหมดที่ระบุไว้ในคุณสมบัตินี้จะมีการสร้างข้อยกเว้น: | 100 |
โดยทั่วไป FDManager จะเปิดการเชื่อมต่อ "ทางกายภาพ" เปิดเมื่อ:
หากต้องการใช้ FDManager กับฐานข้อมูลอื่น ๆ ให้ตรวจสอบลิงค์: การเชื่อมต่อฐานข้อมูล (FireDac) #Driver Linkage
| ฐานข้อมูล | คนขับรถ | tfdconneneNondefpass | หน่วย |
|---|---|---|---|
| Microsoft SQL Server | MSSQL | tfdphysmssqlonneonefpass | firedac.phys.mssqldef, firedac.stan.intf, firedac.phys, firedac.phys.odbcbase, firedac.phys.mssql |
| Oracle Server | ตอนนี้ | tfdphysoracleconnecontefpass | firedac.phys.oracledef, firedac.stan.intf, firedac.phys, firedac.phys.oracle |
| PostgreSQL | หน้า | TFDPHYSPGCONNEONECENDEFPASS | fiedac.phys.pgdef, firedac.stan.intf, firedac.phys, firedac.phys.pg; |
| เซิร์ฟเวอร์ mysql | mysql | tfdphysmysqlconneonefpass | firedac.phys.mysqldef, firedac.stan.intf, firedac.phys, firedac.phys.mysql |
| เซิร์ฟเวอร์ IBM DB2) | DB2 | TFDPHYSDB2CONNECTIONANDEFPARAMS | firedac.phys.db2def, firedac.stan.intf, firedac.phys, firedac.phys.odbcbase, firedac.phys.db2 |
| นกไฟ | FB | tfdphysfbconneontefpass | firedac.phys.fbdef, firedac.stan.intf, firedac.phys, firedac.phys.ibbase, firedac.phys.fb |
| ระหว่างฐาน | ib | TFDPHYSIBCONNEONECENDEFPASS | firedac.phys.ibdef, firedac.stan.intf, firedac.phys, firedac.phys.ibbase, firedac.phys.ib |
| sqlite | sqlite | tfdphyssqliteconnectionandefparams | fiedac.stan.exprfuncs, firedac.phys.sqlitedef, firedac.stan.intf, firedac.phys, firedac.phys.sqlite |
| MongoDB | Mongo | tfdphysmongoconneottondefpass | firedac.phys.mongodbdef, firedac.stan.intf, firedac.phys, firedac.phys.mongoDB |
| ODBC | ODBC | tfdphysodbcconneonecendefpass | firedac.phys.odbcdef, firedac.stan.intf, firedac.phys, firedac.phys.odbcbase, firedac.phys.odbc |
ที่แนบมาในโครงการมีสองตัวอย่างของการใช้การเชื่อมต่อฐานข้อมูลในสภาพแวดล้อมมัลติเธรด
ตัวอย่างที่ 1 โดยใช้การเชื่อมต่อในสภาพแวดล้อมแบบมัลติเธรดสำหรับ เดสก์ท็อป
ตัวอย่างที่ 2 โดยใช้การเชื่อมต่อในสภาพแวดล้อมแบบมัลติเธรดสำหรับเว็บเซิร์ฟเวอร์ด้วยม้า
ตัวอย่างทั้งสองใช้ฐานข้อมูล Firebird