SQL Server Archiเทคเจอร์ (อธิบาย)

MS SQL Server เป็นสถาปัตยกรรมแบบไคลเอนต์-เซิร์ฟเวอร์ กระบวนการของ MS SQL Server เริ่มต้นด้วยแอปพลิเคชันไคลเอนต์ที่ส่งคำขอ จากนั้น SQL Server จะยอมรับ ประมวลผล และตอบกลับคำขอด้วยข้อมูลที่ประมวลผลแล้ว มาอธิบายสถาปัตยกรรมทั้งหมดโดยละเอียดกันด้านล่าง:

ตามแผนภาพด้านล่างแสดงให้เห็นว่ามีองค์ประกอบหลักสามประการใน SQL Server Archiเทคเจอร์:

  1. ชั้นโปรโตคอล
  2. เครื่องยนต์เชิงสัมพันธ์
  3. เครื่องยนต์จัดเก็บข้อมูล
SQL Server Archiเทคเจอร์
SQL Server Archiแผนภาพเทคเจอร์

เลเยอร์โปรโตคอล – SNI

MS SQL SERVER PROTOCOL LAYER รองรับ 3 ประเภทไคลเอ็นต์เซิร์ฟเวอร์ Archiเทคเจอร์ เราจะเริ่มต้นด้วย “เซิร์ฟเวอร์ไคลเอนต์สามประเภท Archiเทคเจอร์” ซึ่ง MS SQL Server รองรับ

หน่วยความจำที่ใช้ร่วมกัน

ลองพิจารณาสถานการณ์การสนทนาในตอนเช้าอีกครั้ง

เลเยอร์โปรโตคอล - SNI

แม่และทอม – ที่นี่ทอมและแม่ของเขาอยู่ในสถานที่เดียวกัน นั่นคือที่บ้านของพวกเขา ทอมขอกาแฟได้ ส่วนแม่ก็เสิร์ฟร้อนได้

เซิร์ฟเวอร์ MS SQL – Here MSSQL เซิร์ฟเวอร์จัดให้ โปรโตคอลหน่วยความจำที่ใช้ร่วมกัน. ที่นี่ CLIENT และ MSSQL เซิร์ฟเวอร์ทำงานบนเครื่องเดียวกัน ทั้งสองสามารถสื่อสารผ่านโปรโตคอลหน่วยความจำที่ใช้ร่วมกัน

การเปรียบเทียบ: ให้แมปเอนทิตีในสองสถานการณ์ข้างต้น เราสามารถแมป Tom กับ Client, Mom กับเซิร์ฟเวอร์ SQL, Home กับ Machine และการสื่อสารด้วยวาจากับ Shared Memory Protocol ได้อย่างง่ายดาย

จากโต๊ะกำหนดค่าและการติดตั้ง:

สำหรับการเชื่อมต่อกับ Local DB – In สตูดิโอจัดการ SQL, ตัวเลือก "ชื่อเซิร์ฟเวอร์" อาจเป็นได้

"."

“โลคอลโฮสต์”

"127.0.0.1"

“เครื่อง\อินสแตนซ์”

เลเยอร์โปรโตคอล - SNI

TCP / IP

ลองพิจารณาในตอนเย็น ทอมอยู่ในอารมณ์ปาร์ตี้ เขาต้องการกาแฟที่สั่งจากร้านกาแฟชื่อดัง ร้านกาแฟอยู่ห่างจากบ้านของเขา 10 กม.

TCP / IP

ที่นี่ทอมและสตาร์บัคอยู่ในสถานที่ที่แตกต่างกัน ทอมที่บ้านและสตาร์บัคส์ที่ตลาดอันพลุกพล่าน พวกเขากำลังสื่อสารผ่านเครือข่ายเซลลูล่าร์ ในทำนองเดียวกัน MS SQL SERVER ให้ความสามารถในการโต้ตอบผ่าน โปรโตคอล TCP / IPโดยที่ CLIENT และ MS SQL Server อยู่ระยะไกลซึ่งกันและกันและติดตั้งบนเครื่องที่แยกจากกัน

การเปรียบเทียบ: ให้แมปเอนทิตีในสองสถานการณ์ข้างต้น เราสามารถแมป Tom กับไคลเอนต์, Starbuck กับเซิร์ฟเวอร์ SQL, หน้าแรก/ตลาดไปยังตำแหน่งระยะไกล และสุดท้ายคือเครือข่ายโทรศัพท์เคลื่อนที่กับโปรโตคอล TCP/IP

หมายเหตุจากส่วนกำหนดค่า/การติดตั้ง:

  • ใน SQL Management Studio – สำหรับการเชื่อมต่อผ่าน TCP\IP ตัวเลือก “ชื่อเซิร์ฟเวอร์” จะต้องเป็น “เครื่อง\อินสแตนซ์ของเซิร์ฟเวอร์”
  • เซิร์ฟเวอร์ SQL ใช้พอร์ต 1433 ใน TCP/IP

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 คือการตรวจสอบข้อความค้นหา ข้อผิดพลาดทางวากยสัมพันธ์และความหมาย ในที่สุด มัน สร้างแผนผังแบบสอบถาม- มาพูดคุยกันในรายละเอียด

ตัวแยกวิเคราะห์ CMD

การตรวจสอบวากยสัมพันธ์:

  • เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ 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 ไบต์ ซึ่งบรรจุข้อมูลเมตาดาต้าเกี่ยวกับเพจ เช่น ประเภทเพจ หมายเลขหน้า ขนาดพื้นที่ที่ใช้ ขนาดพื้นที่ว่าง และตัวชี้ไปยังหน้าถัดไปและหน้าก่อนหน้า ฯลฯ

ประเภทไฟล์

ประเภทไฟล์

  1. ไฟล์หลัก
  • ทุกฐานข้อมูลจะมีไฟล์หลักหนึ่งไฟล์
  • ซึ่งจะจัดเก็บข้อมูลสำคัญทั้งหมดที่เกี่ยวข้องกับตาราง มุมมอง ทริกเกอร์ ฯลฯ
  • นามสกุลคือ .MDF โดยปกติแต่สามารถเป็นส่วนขยายใดๆ ได้
  1. ไฟล์รอง
  • ฐานข้อมูลอาจมีหรือไม่มีไฟล์รองหลายไฟล์
  • นี่เป็นทางเลือกและมีข้อมูลเฉพาะของผู้ใช้
  • นามสกุลคือ .นาฟ โดยปกติแต่สามารถเป็นส่วนขยายใดๆ ได้
  1. ล็อกไฟล์
  • หรือที่เรียกว่าบันทึกการเขียนล่วงหน้า
  • นามสกุลคือ .แอลดีเอฟ
  • ใช้สำหรับการจัดการธุรกรรม
  • ใช้เพื่อกู้คืนจากอินสแตนซ์ที่ไม่ต้องการ ดำเนินงานที่สำคัญของการย้อนกลับไปสู่ธุรกรรมที่ไม่มีข้อผูกมัด

Storage Engine มี 3 องค์ประกอบ คือ มาดูรายละเอียดกันดีกว่า

วิธีการเข้าถึง

มันทำหน้าที่เป็นส่วนต่อประสานระหว่างตัวดำเนินการแบบสอบถามและ Buffer บันทึกผู้จัดการ/ธุรกรรม

วิธีการเข้าถึงนั้นไม่ได้ดำเนินการใดๆ

การดำเนินการแรกคือการพิจารณาว่าแบบสอบถามคือ:

  1. เลือกใบแจ้งยอด (DDL)
  2. คำสั่งที่ไม่เลือก (DDL & DML)

วิธีการเข้าถึงจะดำเนินการตามขั้นตอนต่อไปนี้ ขึ้นอยู่กับผลลัพธ์:

  1. หากคำถามคือ DDL, คำสั่ง SELECT, แบบสอบถามจะถูกส่งผ่านไปยัง Buffer ผู้จัดการ สำหรับการประมวลผลเพิ่มเติม
  2. และหากสอบถามว่า คำสั่ง DDL, NON-SELECTแบบสอบถามจะถูกส่งผ่านไปยังตัวจัดการธุรกรรม ซึ่งส่วนใหญ่จะรวมถึงคำสั่ง UPDATE

วิธีการเข้าถึง

Buffer ผู้จัดการ

Buffer ผู้จัดการจัดการฟังก์ชันหลักสำหรับโมดูลด้านล่าง:

  • วางแผนแคช
  • การแยกวิเคราะห์ข้อมูล: Buffer แคชและการจัดเก็บข้อมูล
  • หน้าสกปรก

เราจะเรียนรู้แผน Buffer และแคชข้อมูลในส่วนนี้ เราจะกล่าวถึงหน้าสกปรกในส่วนธุรกรรม

Buffer ผู้จัดการ

วางแผนแคช

  • แผนแบบสอบถามที่มีอยู่: ตัวจัดการบัฟเฟอร์จะตรวจสอบว่ามีแผนการดำเนินการอยู่ในแคชแผนที่จัดเก็บไว้หรือไม่ หากใช่ ระบบจะค้นหาแคชแผนและแคชข้อมูลที่เกี่ยวข้อง
  • แผนแคชครั้งแรก: แคชแผนที่มีอยู่มาจากไหน หากแผนการดำเนินการแบบสอบถามครั้งแรกกำลังถูกเรียกใช้และมีความซับซ้อน ก็สมเหตุสมผลที่จะจัดเก็บไว้ในแคช Plane วิธีนี้จะช่วยให้พร้อมใช้งานได้เร็วขึ้นเมื่อ SQL Server ได้รับแบบสอบถามเดียวกันในครั้งถัดไป ดังนั้น หากเรียกใช้เป็นครั้งแรก ก็ไม่มีอะไรอื่นนอกจากแบบสอบถามเองที่จัดเก็บการดำเนินการตามแผน

การแยกวิเคราะห์ข้อมูล: Buffer แคชและการจัดเก็บข้อมูล

Buffer ผู้จัดการให้การเข้าถึงข้อมูลที่จำเป็น ด้านล่างมี 2 วิธีที่เป็นไปได้ ขึ้นอยู่กับว่ามีข้อมูลอยู่ในแคชข้อมูลหรือไม่:

Buffer แคช - การแยกวิเคราะห์แบบนุ่มนวล:

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 ที่สำคัญอีกด้วย

อ่านเพิ่มเติม readmore