SQL Server Archiเทคเจอร์ (อธิบาย)
MS SQL Server เป็นสถาปัตยกรรมแบบไคลเอนต์-เซิร์ฟเวอร์ กระบวนการของ MS SQL Server เริ่มต้นด้วยแอปพลิเคชันไคลเอนต์ที่ส่งคำขอ จากนั้น SQL Server จะยอมรับ ประมวลผล และตอบกลับคำขอด้วยข้อมูลที่ประมวลผลแล้ว มาอธิบายสถาปัตยกรรมทั้งหมดโดยละเอียดกันด้านล่าง:
ตามแผนภาพด้านล่างแสดงให้เห็นว่ามีองค์ประกอบหลักสามประการใน SQL Server Archiเทคเจอร์:
- ชั้นโปรโตคอล
- เครื่องยนต์เชิงสัมพันธ์
- เครื่องยนต์จัดเก็บข้อมูล
เลเยอร์โปรโตคอล – SNI
MS SQL SERVER PROTOCOL LAYER รองรับ 3 ประเภทไคลเอ็นต์เซิร์ฟเวอร์ Archiเทคเจอร์ เราจะเริ่มต้นด้วย “เซิร์ฟเวอร์ไคลเอนต์สามประเภท Archiเทคเจอร์” ซึ่ง MS SQL Server รองรับ
หน่วยความจำที่ใช้ร่วมกัน
ลองพิจารณาสถานการณ์การสนทนาในตอนเช้าอีกครั้ง
แม่และทอม – ที่นี่ทอมและแม่ของเขาอยู่ในสถานที่เดียวกัน นั่นคือที่บ้านของพวกเขา ทอมขอกาแฟได้ ส่วนแม่ก็เสิร์ฟร้อนได้
เซิร์ฟเวอร์ MS SQL – Here MSSQL เซิร์ฟเวอร์จัดให้ โปรโตคอลหน่วยความจำที่ใช้ร่วมกัน. ที่นี่ CLIENT และ MSSQL เซิร์ฟเวอร์ทำงานบนเครื่องเดียวกัน ทั้งสองสามารถสื่อสารผ่านโปรโตคอลหน่วยความจำที่ใช้ร่วมกัน
การเปรียบเทียบ: ให้แมปเอนทิตีในสองสถานการณ์ข้างต้น เราสามารถแมป Tom กับ Client, Mom กับเซิร์ฟเวอร์ SQL, Home กับ Machine และการสื่อสารด้วยวาจากับ Shared Memory Protocol ได้อย่างง่ายดาย
จากโต๊ะกำหนดค่าและการติดตั้ง:
สำหรับการเชื่อมต่อกับ Local DB – In สตูดิโอจัดการ SQL, ตัวเลือก "ชื่อเซิร์ฟเวอร์" อาจเป็นได้
"."
“โลคอลโฮสต์”
"127.0.0.1"
“เครื่อง\อินสแตนซ์”
TCP / IP
ลองพิจารณาในตอนเย็น ทอมอยู่ในอารมณ์ปาร์ตี้ เขาต้องการกาแฟที่สั่งจากร้านกาแฟชื่อดัง ร้านกาแฟอยู่ห่างจากบ้านของเขา 10 กม.
ที่นี่ทอมและสตาร์บัคอยู่ในสถานที่ที่แตกต่างกัน ทอมที่บ้านและสตาร์บัคส์ที่ตลาดอันพลุกพล่าน พวกเขากำลังสื่อสารผ่านเครือข่ายเซลลูล่าร์ ในทำนองเดียวกัน MS SQL SERVER ให้ความสามารถในการโต้ตอบผ่าน โปรโตคอล TCP / IPโดยที่ CLIENT และ MS SQL Server อยู่ระยะไกลซึ่งกันและกันและติดตั้งบนเครื่องที่แยกจากกัน
การเปรียบเทียบ: ให้แมปเอนทิตีในสองสถานการณ์ข้างต้น เราสามารถแมป Tom กับไคลเอนต์, Starbuck กับเซิร์ฟเวอร์ SQL, หน้าแรก/ตลาดไปยังตำแหน่งระยะไกล และสุดท้ายคือเครือข่ายโทรศัพท์เคลื่อนที่กับโปรโตคอล TCP/IP
หมายเหตุจากส่วนกำหนดค่า/การติดตั้ง:
- ใน SQL Management Studio – สำหรับการเชื่อมต่อผ่าน TCP\IP ตัวเลือก “ชื่อเซิร์ฟเวอร์” จะต้องเป็น “เครื่อง\อินสแตนซ์ของเซิร์ฟเวอร์”
- เซิร์ฟเวอร์ SQL ใช้พอร์ต 1433 ใน TCP/IP
ชื่อท่อ
ในที่สุด ในตอนกลางคืน ทอมอยากกินชาเขียวอ่อนๆ ซึ่งเซียร์ราเพื่อนบ้านของเธอเตรียมมาอย่างดี
Here ทอม ของเขาและ เพื่อนบ้านเซียร่าก็อยู่เหมือนกัน กายภาพ ที่ตั้งเป็นเพื่อนบ้านกัน พวกเขากำลังสื่อสารผ่านทาง เครือข่ายภายใน ในทำนองเดียวกัน เซิร์ฟเวอร์ MS SQL ให้ความสามารถในการโต้ตอบผ่านทาง ชื่อไปป์ มาตรการ. ที่นี่ลูกค้าและ เซิร์ฟเวอร์ MS SQL มีการเชื่อมต่อผ่านทาง แลน.
การเปรียบเทียบ: ให้แมปเอนทิตีในสองสถานการณ์ข้างต้น เราสามารถแมป Tom กับ Client, Sierra กับเซิร์ฟเวอร์ SQL, Neighbor กับ LAN และสุดท้ายคือเครือข่ายภายในกับ Named Pipe Protocol
หมายเหตุจากส่วนกำหนดค่า/การติดตั้ง:
- สำหรับการเชื่อมต่อผ่านเนมไปป์ ตัวเลือกนี้ถูกปิดใช้งานตามค่าเริ่มต้น และจำเป็นต้องเปิดใช้งานโดย SQL Configuration Manager
TDS คืออะไร?
ตอนนี้เรารู้แล้วว่าไคลเอนต์-เซิร์ฟเวอร์มีสามประเภท Archiให้เราดู TDS คร่าวๆ กัน:
- TDS ย่อมาจากสตรีมข้อมูลแบบตาราง
- โปรโตคอลทั้ง 3 ใช้แพ็กเก็ต TDS TDS ถูกห่อหุ้มไว้ในแพ็กเก็ตเครือข่าย ซึ่งช่วยให้สามารถถ่ายโอนข้อมูลจากเครื่องไคลเอนต์ไปยังเครื่องเซิร์ฟเวอร์ได้
- TDS ได้รับการพัฒนาครั้งแรกโดย Sybase และปัจจุบันเป็นเจ้าของโดย Microsoft
เครื่องยนต์เชิงสัมพันธ์
Relational Engine เรียกอีกอย่างว่า Query Process มันมี SQL Server คอมโพเนนต์ที่กำหนดว่าคิวรีต้องทำอะไรและจะทำให้ดีที่สุดได้อย่างไร มีหน้าที่รับผิดชอบในการดำเนินการค้นหาผู้ใช้โดยการขอข้อมูลจากเครื่องมือจัดเก็บข้อมูลและประมวลผลผลลัพธ์ที่ส่งคืน
ดังที่ปรากฏใน Archiมีแผนภาพ Tectural อยู่ 3องค์ประกอบหลัก ของเครื่องมือเชิงสัมพันธ์ มาศึกษาส่วนประกอบโดยละเอียด:
ตัวแยกวิเคราะห์ CMD
ข้อมูลเมื่อได้รับจาก Protocol Layer จะถูกส่งไปยัง Relational Engine “ซีเอ็มดีพาร์เซอร์” เป็นองค์ประกอบแรกของ Relational Engine เพื่อรับข้อมูลแบบสอบถาม งานหลักของ CMD Parser คือการตรวจสอบข้อความค้นหา ข้อผิดพลาดทางวากยสัมพันธ์และความหมาย ในที่สุด มัน สร้างแผนผังแบบสอบถาม- มาพูดคุยกันในรายละเอียด
การตรวจสอบวากยสัมพันธ์:
- เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ MS SQL ยังมีชุดคำหลักที่กำหนดไว้ล่วงหน้าด้วย นอกจากนี้ SQL Server ยังมีไวยากรณ์ของตัวเองซึ่งเซิร์ฟเวอร์ SQL เข้าใจ
- SELECT, INSERT, UPDATE และอื่นๆ อีกมากมายอยู่ในรายการคำหลักที่กำหนดไว้ล่วงหน้าของ MS SQL
- CMD Parser ทำการตรวจสอบวากยสัมพันธ์ หากอินพุตของผู้ใช้ไม่เป็นไปตามไวยากรณ์ภาษาหรือกฎไวยากรณ์เหล่านี้ ส่งคืนข้อผิดพลาด
ตัวอย่าง: สมมติว่าชาวรัสเซียไปร้านอาหารญี่ปุ่น เขาสั่งอาหารจานด่วนเป็นภาษารัสเซีย น่าเสียดายที่พนักงานเสิร์ฟเข้าใจภาษาญี่ปุ่นเท่านั้น อะไรจะเห็นผลชัดเจนที่สุด?
คำตอบคือ – พนักงานเสิร์ฟไม่สามารถดำเนินการตามคำสั่งซื้อต่อไปได้
ไม่ควรมีการเบี่ยงเบนใด ๆ ในไวยากรณ์หรือภาษาที่เซิร์ฟเวอร์ SQL ยอมรับ ถ้ามี เซิร์ฟเวอร์ SQL จะไม่สามารถประมวลผลได้ และด้วยเหตุนี้จึงจะส่งกลับข้อความแสดงข้อผิดพลาด
เราจะเรียนรู้เพิ่มเติมเกี่ยวกับการสืบค้น MS SQL ในบทช่วยสอนที่กำลังจะมีขึ้น แต่ให้พิจารณาไวยากรณ์แบบสอบถามพื้นฐานที่สุดด้านล่างเป็น
SELECT * from <TABLE_NAME>;
ตอนนี้ เพื่อให้เข้าใจถึงสิ่งที่วากยสัมพันธ์ทำ สมมติว่าผู้ใช้รันแบบสอบถามพื้นฐานดังต่อไปนี้:
SELECR * from <TABLE_NAME>
โปรดทราบว่าแทนที่จะใช้ 'SELECT' ผู้ใช้พิมพ์ "SELECR"
ผลลัพธ์: CMD Parser จะแยกวิเคราะห์คำสั่งนี้และจะส่งข้อความแสดงข้อผิดพลาด เนื่องจาก “SELECR” ไม่เป็นไปตามชื่อคำหลักและไวยากรณ์ที่กำหนดไว้ล่วงหน้า ที่นี่ CMD Parser คาดหวังว่า "SELECT"
การตรวจสอบความหมาย:
- ดำเนินการโดย นอร์มัลไลเซอร์.
- ในรูปแบบที่ง่ายที่สุด จะตรวจสอบว่าชื่อคอลัมน์ ชื่อตารางที่กำลังสอบถามมีอยู่ใน Schema หรือไม่ และหากมีอยู่ ให้ผูกเข้ากับ Query สิ่งนี้เรียกว่า ผูกพัน.
- ความซับซ้อนจะเพิ่มขึ้นเมื่อแบบสอบถามของผู้ใช้มี VIEW Normalizer จะดำเนินการแทนที่ด้วยคำจำกัดความของมุมมองที่จัดเก็บไว้ภายในและอื่นๆ อีกมากมาย
มาทำความเข้าใจสิ่งนี้ด้วยความช่วยเหลือของตัวอย่างด้านล่าง –
SELECT * from USER_ID
ผลลัพธ์: CMD Parser จะแยกวิเคราะห์คำสั่งนี้สำหรับการตรวจสอบความหมาย ตัวแยกวิเคราะห์จะแสดงข้อความแสดงข้อผิดพลาดเนื่องจาก Normalizer จะไม่พบตารางที่ร้องขอ (USER_ID) เนื่องจากไม่มีอยู่
สร้างแผนผังแบบสอบถาม:
- ขั้นตอนนี้จะสร้างแผนผังการดำเนินการที่แตกต่างกันซึ่งสามารถเรียกใช้แบบสอบถามได้
- โปรดทราบว่า ต้นไม้ที่แตกต่างกันทั้งหมดมีผลลัพธ์ที่ต้องการเหมือนกัน
เพิ่มประสิทธิภาพ
งานของเครื่องมือเพิ่มประสิทธิภาพคือการสร้างแผนปฏิบัติการสำหรับการค้นหาของผู้ใช้ นี่คือแผนที่จะกำหนดวิธีการดำเนินการค้นหาของผู้ใช้
โปรดทราบว่าข้อความค้นหาบางส่วนไม่ได้รับการปรับให้เหมาะสม การเพิ่มประสิทธิภาพเสร็จสิ้นสำหรับคำสั่ง DML (Data Modification Language) เช่น SELECT, INSERT, DELETE และ UPDATE ข้อความค้นหาดังกล่าวจะถูกทำเครื่องหมายก่อน จากนั้นจึงส่งไปยังเครื่องมือเพิ่มประสิทธิภาพ คำสั่ง DDL เช่น CREATE และ ALTER ไม่ได้รับการปรับให้เหมาะสม แต่จะถูกคอมไพล์เป็นรูปแบบภายในแทน ต้นทุนการสืบค้นจะคำนวณตามปัจจัยต่างๆ เช่น การใช้งาน CPU การใช้หน่วยความจำ และความต้องการอินพุต/เอาท์พุต
บทบาทของเครื่องมือเพิ่มประสิทธิภาพคือการค้นหา แผนการดำเนินการที่ถูกที่สุด ไม่ใช่ดีที่สุด และคุ้มต้นทุน
ก่อนที่เราจะพูดถึงรายละเอียดทางเทคนิคเพิ่มเติมของ Optimizer ให้พิจารณาตัวอย่างในชีวิตจริงด้านล่าง:
ตัวอย่าง:
สมมติว่าคุณต้องการเปิดบัญชีธนาคารออนไลน์ คุณรู้อยู่แล้วว่ามีธนาคารแห่งหนึ่งซึ่งใช้เวลาสูงสุด 2 วันในการเปิดบัญชี แต่คุณยังมีรายชื่อธนาคารอื่นอีก 20 แห่ง ซึ่งอาจใช้เวลาหรืออาจจะไม่น้อยกว่า 2 วันก็ได้ คุณสามารถเริ่มติดต่อกับธนาคารเหล่านี้เพื่อพิจารณาว่าธนาคารใดใช้เวลาน้อยกว่า 2 วัน ขณะนี้ คุณอาจไม่พบธนาคารที่ใช้เวลาน้อยกว่า 2 วัน และมีเวลาเพิ่มเติมที่เสียไปเนื่องจากกิจกรรมการค้นหานั่นเอง จะดีกว่าถ้าเปิดบัญชีกับธนาคารแห่งแรกเอง
สรุป: การเลือกอย่างชาญฉลาดนั้นสำคัญกว่ามาก โดยเฉพาะอย่างยิ่ง เลือกสิ่งที่ ตัวเลือกนั้นดีที่สุด ไม่ใช่ถูกที่สุด
ในทำนองเดียวกัน มส SQL Optimizer ทำงานบนอัลกอริทึมแบบละเอียดถี่ถ้วน/ฮิวริสติกในตัว เป้าหมายคือเพื่อลดเวลาการดำเนินการค้นหาให้เหลือน้อยที่สุด อัลกอริธึมของ Optimizer ทั้งหมดคือ ความเหมาะสมของ Microsoft และความลับ แม้ว่า, ด้านล่างนี้เป็นขั้นตอนระดับสูงที่ดำเนินการโดย MS SQL Optimizer การค้นหาการเพิ่มประสิทธิภาพมีสามขั้นตอนตามที่แสดงในแผนภาพด้านล่าง:
ระยะที่ 0: ค้นหาแผนเล็กน้อย:
- สิ่งนี้เรียกอีกอย่างว่า ขั้นก่อนการเพิ่มประสิทธิภาพ.
- ในบางกรณี อาจมีแผนที่ใช้งานได้จริงเพียงแผนเดียว ซึ่งเรียกว่าแผนที่เรียบง่าย ไม่จำเป็นต้องสร้างแผนที่ปรับให้เหมาะสม เหตุผลก็คือ หากค้นหาเพิ่มเติมก็จะพบแผนการดำเนินการรันไทม์เดียวกัน อีกทั้งยังมีค่าใช้จ่ายเพิ่มเติมในการค้นหาแผนที่ปรับให้เหมาะสมซึ่งไม่จำเป็นเลย
- หากไม่พบแผนเล็กๆ น้อยๆ แสดงว่า 1st เฟสเริ่ม.
ระยะที่ 1: ค้นหาแผนการประมวลผลธุรกรรม
- รวมถึงการค้นหาด้วย แผนแบบเรียบง่ายและซับซ้อน.
- การค้นหาแผนอย่างง่าย: ข้อมูลในอดีตของคอลัมน์และดัชนีที่เกี่ยวข้องกับแบบสอบถาม จะถูกนำมาใช้สำหรับการวิเคราะห์ทางสถิติ ซึ่งโดยปกติจะประกอบด้วยแต่ไม่จำกัดเพียงดัชนีเดียวต่อตาราง
- อย่างไรก็ตาม หากไม่พบแผนที่เรียบง่าย จะต้องค้นหาแผนที่ซับซ้อนกว่านั้น เนื่องจากต้องมีดัชนีหลายรายการต่อตาราง
ระยะที่ 2: การประมวลผลและการเพิ่มประสิทธิภาพแบบขนาน
- หากกลยุทธ์ข้างต้นไม่ได้ผล เครื่องมือเพิ่มประสิทธิภาพจะค้นหาความเป็นไปได้ในการประมวลผลแบบขนาน ขึ้นอยู่กับความสามารถในการประมวลผลและการกำหนดค่าของเครื่อง
- หากยังไม่สามารถทำได้ ขั้นตอนการเพิ่มประสิทธิภาพขั้นสุดท้ายจะเริ่มต้นขึ้น ตอนนี้ เป้าหมายการปรับให้เหมาะสมขั้นสุดท้ายคือการค้นหาตัวเลือกอื่นๆ ที่เป็นไปได้ทั้งหมดสำหรับการดำเนินการค้นหาในวิธีที่ดีที่สุด ขั้นตอนการเพิ่มประสิทธิภาพขั้นสุดท้าย Algorithms เป็น Microsoft ความเหมาะสม
ตัวดำเนินการแบบสอบถาม
แบบสอบถามเรียกดำเนินการ วิธีการเข้าถึง โดยมีแผนการดำเนินการสำหรับตรรกะในการดึงข้อมูลที่จำเป็นสำหรับการดำเนินการ เมื่อได้รับข้อมูลจาก Storage Engine ผลลัพธ์จะถูกเผยแพร่ไปยังเลเยอร์ Protocol สุดท้ายข้อมูลจะถูกส่งไปยังผู้ใช้ปลายทาง
เครื่องยนต์จัดเก็บข้อมูล
การทำงานของ Storage Engine คือการจัดเก็บข้อมูลในระบบจัดเก็บข้อมูล เช่น Disk หรือ SAN และดึงข้อมูลเมื่อจำเป็น ก่อนที่เราจะเจาะลึกเกี่ยวกับกลไกการจัดเก็บข้อมูล เรามาดูวิธีการจัดเก็บข้อมูลกันก่อน ฐานข้อมูล และ ประเภทของไฟล์ที่มีอยู่
ไฟล์ข้อมูลและขอบเขต:
ไฟล์ข้อมูล จัดเก็บข้อมูลทางกายภาพในรูปแบบของหน้าข้อมูล โดยแต่ละหน้าข้อมูลมีขนาด 8KB สร้างหน่วยเก็บข้อมูลที่เล็กที่สุดใน SQL Server หน้าข้อมูลเหล่านี้ถูกจัดกลุ่มตามตรรกะเพื่อสร้างขอบเขต ไม่มีการกำหนดวัตถุให้กับหน้าใน SQL Server
การบำรุงรักษาอ็อบเจ็กต์ทำได้ผ่านส่วนขยาย หน้านี้มีส่วนที่เรียกว่า Page Header ซึ่งมีขนาด 96 ไบต์ ซึ่งบรรจุข้อมูลเมตาดาต้าเกี่ยวกับเพจ เช่น ประเภทเพจ หมายเลขหน้า ขนาดพื้นที่ที่ใช้ ขนาดพื้นที่ว่าง และตัวชี้ไปยังหน้าถัดไปและหน้าก่อนหน้า ฯลฯ
ประเภทไฟล์
- ไฟล์หลัก
- ทุกฐานข้อมูลจะมีไฟล์หลักหนึ่งไฟล์
- ซึ่งจะจัดเก็บข้อมูลสำคัญทั้งหมดที่เกี่ยวข้องกับตาราง มุมมอง ทริกเกอร์ ฯลฯ
- นามสกุลคือ .MDF โดยปกติแต่สามารถเป็นส่วนขยายใดๆ ได้
- ไฟล์รอง
- ฐานข้อมูลอาจมีหรือไม่มีไฟล์รองหลายไฟล์
- นี่เป็นทางเลือกและมีข้อมูลเฉพาะของผู้ใช้
- นามสกุลคือ .นาฟ โดยปกติแต่สามารถเป็นส่วนขยายใดๆ ได้
- ล็อกไฟล์
- หรือที่เรียกว่าบันทึกการเขียนล่วงหน้า
- นามสกุลคือ .แอลดีเอฟ
- ใช้สำหรับการจัดการธุรกรรม
- ใช้เพื่อกู้คืนจากอินสแตนซ์ที่ไม่ต้องการ ดำเนินงานที่สำคัญของการย้อนกลับไปสู่ธุรกรรมที่ไม่มีข้อผูกมัด
Storage Engine มี 3 องค์ประกอบ คือ มาดูรายละเอียดกันดีกว่า
วิธีการเข้าถึง
มันทำหน้าที่เป็นส่วนต่อประสานระหว่างตัวดำเนินการแบบสอบถามและ Buffer บันทึกผู้จัดการ/ธุรกรรม
วิธีการเข้าถึงนั้นไม่ได้ดำเนินการใดๆ
การดำเนินการแรกคือการพิจารณาว่าแบบสอบถามคือ:
- เลือกใบแจ้งยอด (DDL)
- คำสั่งที่ไม่เลือก (DDL & DML)
วิธีการเข้าถึงจะดำเนินการตามขั้นตอนต่อไปนี้ ขึ้นอยู่กับผลลัพธ์:
- หากคำถามคือ DDL, คำสั่ง SELECT, แบบสอบถามจะถูกส่งผ่านไปยัง Buffer ผู้จัดการ สำหรับการประมวลผลเพิ่มเติม
- และหากสอบถามว่า คำสั่ง DDL, NON-SELECTแบบสอบถามจะถูกส่งผ่านไปยังตัวจัดการธุรกรรม ซึ่งส่วนใหญ่จะรวมถึงคำสั่ง UPDATE
Buffer ผู้จัดการ
Buffer ผู้จัดการจัดการฟังก์ชันหลักสำหรับโมดูลด้านล่าง:
- วางแผนแคช
- การแยกวิเคราะห์ข้อมูล: Buffer แคชและการจัดเก็บข้อมูล
- หน้าสกปรก
เราจะเรียนรู้แผน Buffer และแคชข้อมูลในส่วนนี้ เราจะกล่าวถึงหน้าสกปรกในส่วนธุรกรรม
วางแผนแคช
- แผนแบบสอบถามที่มีอยู่: ตัวจัดการบัฟเฟอร์จะตรวจสอบว่ามีแผนการดำเนินการอยู่ในแคชแผนที่จัดเก็บไว้หรือไม่ หากใช่ ระบบจะค้นหาแคชแผนและแคชข้อมูลที่เกี่ยวข้อง
- แผนแคชครั้งแรก: แคชแผนที่มีอยู่มาจากไหน หากแผนการดำเนินการแบบสอบถามครั้งแรกกำลังถูกเรียกใช้และมีความซับซ้อน ก็สมเหตุสมผลที่จะจัดเก็บไว้ในแคช Plane วิธีนี้จะช่วยให้พร้อมใช้งานได้เร็วขึ้นเมื่อ SQL Server ได้รับแบบสอบถามเดียวกันในครั้งถัดไป ดังนั้น หากเรียกใช้เป็นครั้งแรก ก็ไม่มีอะไรอื่นนอกจากแบบสอบถามเองที่จัดเก็บการดำเนินการตามแผน
การแยกวิเคราะห์ข้อมูล: Buffer แคชและการจัดเก็บข้อมูล
Buffer ผู้จัดการให้การเข้าถึงข้อมูลที่จำเป็น ด้านล่างมี 2 วิธีที่เป็นไปได้ ขึ้นอยู่กับว่ามีข้อมูลอยู่ในแคชข้อมูลหรือไม่:
Buffer แคช - การแยกวิเคราะห์แบบนุ่มนวล:
Buffer ผู้จัดการค้นหาข้อมูลใน Buffer ในแคชข้อมูล หากมีอยู่ ข้อมูลนี้จะถูกใช้โดย Query Executor การดำเนินการนี้จะช่วยปรับปรุงประสิทธิภาพเนื่องจากจำนวนการดำเนินการ I/O ลดลงเมื่อดึงข้อมูลจากแคชเมื่อเทียบกับการดึงข้อมูลจากที่จัดเก็บข้อมูล
การจัดเก็บข้อมูล – การแยกวิเคราะห์อย่างหนัก:
หากไม่มีข้อมูลอยู่ใน Buffer ผู้จัดการมากกว่าข้อมูลที่ต้องการจะถูกค้นหาในการจัดเก็บข้อมูล หากยังเก็บข้อมูลไว้ในแคชข้อมูลเพื่อใช้ในอนาคต
หน้าสกปรก
มันถูกจัดเก็บเป็นตรรกะการประมวลผลของตัวจัดการธุรกรรม เราจะเรียนรู้รายละเอียดในส่วนตัวจัดการธุรกรรม
ผู้จัดการธุรกรรม
ตัวจัดการธุรกรรมถูกเรียกใช้เมื่อวิธีการเข้าถึงกำหนดว่าแบบสอบถามเป็นคำสั่งที่ไม่เลือก
ตัวจัดการบันทึก
- Log Manager ติดตามการอัปเดตทั้งหมดที่ทำในระบบผ่านบันทึกในบันทึกธุรกรรม
- บันทึกมี บันทึกหมายเลขลำดับด้วยรหัสธุรกรรมและบันทึกการแก้ไขข้อมูล.
- ใช้สำหรับการติดตาม ธุรกรรมที่กระทำและการย้อนกลับของธุรกรรม.
ผู้จัดการล็อค
- ในระหว่างการทำธุรกรรม ข้อมูลที่เกี่ยวข้องในการจัดเก็บข้อมูลจะอยู่ในสถานะล็อค กระบวนการนี้จัดการโดย Lock Manager
- กระบวนการนี้ช่วยให้มั่นใจได้ ความสอดคล้องและการแยกข้อมูล- เรียกอีกอย่างว่าคุณสมบัติของกรด
กระบวนการดำเนินการ
- Log Manager เริ่มการบันทึกและ Lock Manager จะล็อคข้อมูลที่เกี่ยวข้อง
- สำเนาข้อมูลจะถูกเก็บรักษาไว้ใน Buffer ขุมทรัพย์
- สำเนาของข้อมูลที่ควรจะได้รับการอัปเดตจะถูกเก็บรักษาไว้ในบัฟเฟอร์บันทึก และเหตุการณ์ทั้งหมดจะอัปเดตข้อมูลในบัฟเฟอร์ข้อมูล
- เพจที่เก็บข้อมูลเรียกอีกอย่างว่า หน้าสกปรก.
- จุดตรวจสอบและการบันทึกการเขียนล่วงหน้า: กระบวนการนี้ทำงานและทำเครื่องหมายหน้าทั้งหมดจาก Dirty Pages ไปยัง Disk แต่หน้ายังคงอยู่ในแคช ความถี่ประมาณ 1 รอบต่อนาที แต่หน้านั้นจะถูกผลักไปที่หน้า Data ของไฟล์บันทึกก่อน Buffer บันทึก. สิ่งนี้เรียกว่า เขียนการบันทึกล่วงหน้า
- นักเขียนขี้เกียจ: หน้าสกปรกสามารถยังคงอยู่ในหน่วยความจำได้ เมื่อเซิร์ฟเวอร์ SQL สังเกตเห็นการโหลดจำนวนมากและ Buffer หน่วยความจำจำเป็นสำหรับการทำธุรกรรมใหม่ ซึ่งจะล้าง Dirty Pages จากแคช โดยจะทำงานบน ม.ร.ว – อัลกอริทึมที่ใช้ล่าสุดสำหรับการทำความสะอาดเพจจากพูลบัฟเฟอร์ไปยังดิสก์
สรุป
- เซิร์ฟเวอร์ไคลเอนต์สามประเภท Archiมีเทคโนโลยีอยู่: 1) หน่วยความจำที่ใช้ร่วมกัน 2) TCP/IP 3) ไปป์ที่มีชื่อ
- TDS พัฒนาโดย Sybase และปัจจุบันเป็นเจ้าของโดย Microsoftเป็นแพ็กเก็ตที่ห่อหุ้มไว้ในแพ็กเก็ตเครือข่ายสำหรับการถ่ายโอนข้อมูลจากเครื่องไคลเอนต์ไปยังเครื่องเซิร์ฟเวอร์
- Relational Engine ประกอบด้วยองค์ประกอบหลักสามส่วน:ตัวแยกวิเคราะห์ CMD: นี่เป็นสาเหตุของข้อผิดพลาดทางวากยสัมพันธ์และความหมาย และในที่สุดก็สร้างแผนผังแบบสอบถามเครื่องมือเพิ่มประสิทธิภาพ: บทบาทของเครื่องมือเพิ่มประสิทธิภาพคือการค้นหาแผนการดำเนินการที่ถูกที่สุด ไม่ใช่ดีที่สุด และคุ้มต้นทุน
ดำเนินการแบบสอบถาม: ผู้ดำเนินการสืบค้นเรียกวิธีการเข้าถึงและจัดเตรียมแผนการดำเนินการสำหรับตรรกะในการดึงข้อมูลที่จำเป็นสำหรับการดำเนินการ
- มีไฟล์สามประเภท ได้แก่ ไฟล์หลัก ไฟล์รอง และไฟล์บันทึก
- Storage Engine: มีส่วนประกอบที่สำคัญดังต่อไปนี้วิธีการเข้าถึง: ส่วนประกอบนี้กำหนดว่าแบบสอบถามเป็นแบบเลือกหรือไม่เลือกคำสั่ง เรียก Buffer และผู้จัดการการโอนตามลำดับBuffer ผู้จัดการ: Buffer ผู้จัดการจัดการฟังก์ชันหลักสำหรับ Plan Cache, Data Parsing & Dirty Page
ผู้จัดการธุรกรรม: จัดการธุรกรรมที่ไม่ได้เลือกด้วยความช่วยเหลือของผู้จัดการบันทึกและล็อค นอกจากนี้ยังอำนวยความสะดวกในการใช้งานการบันทึก Write Ahead และ Lazy Writer ที่สำคัญอีกด้วย