Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

ฟีเจอร์ Oracle Exadata Smart Scan

บล็อกนี้เจาะลึกรายละเอียดของคุณลักษณะ Oracle® Exadata® Smart Scan รวมถึงคำอธิบายว่าการประมวลผล SQL แตกต่างจากตัวอย่าง Exadata และการใช้งานอย่างไร

แนะนำตัว

Oracle ออกแบบและเปิดตัว Exadata ในปี 2008 โดยเป็นหนึ่งในบริษัทแรกในกลุ่มระบบวิศวกรรม ต่างจากระบบฐานข้อมูลแบบเดิมซึ่งกำหนดค่า ติดตั้ง ปรับแต่ง และจัดการโดยผู้ใช้ ระบบวิศวกรรมมีส่วนประกอบที่จำเป็นทั้งหมด เช่น OS ฐานข้อมูล หน่วยความจำ และพื้นที่จัดเก็บที่ติดตั้ง กำหนดค่า ปรับแต่ง และปรับให้เหมาะสมโดยผู้ให้บริการโซลูชัน เช่น ออราเคิล

มีส่วนประกอบต่างๆ ของเครื่อง Exadata ส่วนประกอบต่อไปนี้เป็นส่วนประกอบหลัก:

  • เซิร์ฟเวอร์ฐานข้อมูล :เซิร์ฟเวอร์ระดับองค์กรที่รันซอฟต์แวร์ฐานข้อมูล Automatic Storage Management (ASM) หรือ Oracle Grid Infrastructure

  • เซิร์ฟเวอร์จัดเก็บข้อมูล :เซิร์ฟเวอร์หน่วยเก็บข้อมูลหรือเซลล์ที่เรียกใช้ซอฟต์แวร์เซิร์ฟเวอร์หน่วยเก็บข้อมูล Exadata ซึ่งจัดการคำขอ I/O ที่มาจากเซิร์ฟเวอร์ฐานข้อมูลและคำขอข้อมูลที่ส่งคืนไปยังผู้ใช้

  • เครือข่าย InfiniBand :เครือข่าย Exadata ภายในสร้างขึ้นบน InfiniBand ซึ่งออกแบบมาสำหรับสภาพแวดล้อมการประมวลผลประสิทธิภาพสูงเป็นหลัก

Exadata มาพร้อมกับซอฟต์แวร์ที่เรียกว่า Exadata Storage Software (ESS) ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานของฐานข้อมูล ESS ซึ่งเป็นเซิร์ฟเวอร์การจัดการพื้นที่เก็บข้อมูลที่ติดตั้งในแต่ละเซลล์จัดเก็บข้อมูล จัดการเซิร์ฟเวอร์จัดเก็บข้อมูลและสื่อสารกับเซิร์ฟเวอร์ฐานข้อมูลสำหรับคำขอที่เกี่ยวข้องกับพื้นที่เก็บข้อมูล

คุณสมบัติหลักของ ESS

ต่อไปนี้เป็นคุณสมบัติหลักของ ESS:

  • แฟลชแคช :แคชแฟลชเป็นแคชประสิทธิภาพสูงบนเซิร์ฟเวอร์เซลล์ที่แคชวัตถุที่เข้าถึงล่าสุด

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

  • EHCC :Exadata Hybrid Columnar Compression (EHCC) เปิดใช้งานการบีบอัดข้อมูลในระดับสูงสุด EHCC จัดระเบียบข้อมูลเป็นชุดของแถวที่เรียกว่าหน่วยบีบอัด . ภายในหน่วยบีบอัด EHCC จะจัดระเบียบข้อมูลตามคอลัมน์แล้วบีบอัดข้อมูล

  • ดัชนีการจัดเก็บ :ดัชนีหน่วยเก็บข้อมูลเป็นโครงสร้างในหน่วยความจำบนเซิร์ฟเวอร์หน่วยเก็บข้อมูลที่ออกแบบมาเพื่อลดเวลาที่ใช้ในการอ่านข้อมูลจากดิสก์บนเซิร์ฟเวอร์หน่วยเก็บข้อมูล

  • การถ่ายเซลล์ :ต่างจากการออกแบบการจัดเก็บข้อมูลแบบเดิม Exadata storagecells ได้รับการออกแบบมาเพื่อประมวลผลเวิร์กโหลดบางส่วนภายในเพื่อลดภาระโดยรวมบนโหนดคอมพิวท์หรือฐานข้อมูล กระบวนการนี้เรียกว่าการถ่ายเซลล์

  • สมาร์ทสแกน :Smart Scan ช่วยให้การประมวลผล SQL ส่วนใหญ่เกิดขึ้นในชั้นการจัดเก็บแทนที่จะเป็นระดับฐานข้อมูล ซึ่งช่วยปรับปรุงประสิทธิภาพการสืบค้นได้อย่างมาก Smart Scan ช่วยลดปริมาณข้อมูลที่ส่งไปยังชั้นฐานข้อมูล ซึ่งจะช่วยลดการใช้งาน CPU บนโหนดฐานข้อมูล

การประมวลผล SQL

ตามเนื้อผ้า การประมวลผล SQL จะเกิดขึ้นบนเซิร์ฟเวอร์ฐานข้อมูลเท่านั้น ใน Exadata การประมวลผล SQL จะถูกแบ่งออกและเกิดขึ้นที่ระดับพื้นที่เก็บข้อมูลด้วย

การประมวลผล SQL แบบดั้งเดิม

ขั้นตอนต่อไปนี้ประกอบด้วยการประมวลผล SQL แบบดั้งเดิม ดังแสดงในแผนภาพต่อไปนี้:

ฟีเจอร์ Oracle Exadata Smart Scan
  1. ลูกค้าส่งคำถาม
  2. การดำเนินการนี้จะทริกเกอร์การสแกนตารางแบบเต็ม
  3. ฐานข้อมูลจะจับคู่คำขอกับไฟล์และขอบเขตที่เกี่ยวข้อง ซึ่งมีตารางที่กำลังสแกนอยู่
  4. คล้ายกับการสแกนแบบเต็ม ฐานข้อมูลจะออกการดำเนินการ I/O เพื่ออ่านบล็อคทั้งหมด
  5. บล็อคที่สืบค้นทั้งหมดของตารางจะถูกอ่านในหน่วยความจำ
  6. กระบวนการค้นหาบล็อคสำหรับแถวที่ตรงตามภาคแสดง
  7. สุดท้าย แถวที่ร้องขอจะถูกส่งกลับไปยังไคลเอนต์

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

การประมวลผล SQL ของเซิร์ฟเวอร์ Exadata

ด้วยพื้นที่จัดเก็บ Exadata การประมวลผล SQL จะได้รับการจัดการอย่างมีประสิทธิภาพมากขึ้น เนื่องจากใช้ซอฟต์แวร์จัดเก็บข้อมูล Exadata ซึ่งมีตรรกะของฐานข้อมูลอยู่ภายใน ขั้นตอนต่อไปนี้ประกอบด้วยการประมวลผล Exadata SQL ดังแสดงในแผนภาพต่อไปนี้:

ฟีเจอร์ Oracle Exadata Smart Scan
  1. ลูกค้าส่งคำถาม
  2. เซิร์ฟเวอร์ฐานข้อมูลสร้างข้อความฐานข้อมูลอัจฉริยะ (iDB) ซึ่งรวมถึงเกณฑ์การสืบค้น ข้อความ iDB นี้ส่งไปยังเซิร์ฟเวอร์หน่วยเก็บข้อมูลทั้งหมดในแร็ค
  3. The cellsrv องค์ประกอบของ ESS จะสแกนบล็อคข้อมูลเพื่อระบุแถวและคอลัมน์ที่ตรงกันที่ตอบสนองคำขอ
  4. เซิร์ฟเวอร์หน่วยเก็บข้อมูลทุกเซิร์ฟเวอร์ดำเนินการตามเกณฑ์การสืบค้นแบบคู่ขนานและส่งเฉพาะแถวที่เกี่ยวข้องหรือผลลัพธ์สุทธิไปยังเซิร์ฟเวอร์ฐานข้อมูลโดยใช้การเชื่อมต่อระหว่างกัน
  5. ฐานข้อมูลจะรวมผลลัพธ์และส่งคืนแถวให้กับลูกค้า

ข้อกำหนดของ Smart Scan

ข้อกำหนดในการใช้ Smart Scan มีดังนี้:

  • คุณใช้ Smart Scan ได้เฉพาะการสแกนตารางแบบเต็มหรือการสแกนดัชนีแบบเต็มเท่านั้น
  • การสืบค้นต้องดำเนินการอ่านเส้นทางตรง
  • คุณต้องตั้งค่าพารามิเตอร์การเริ่มต้นฐานข้อมูล CELL_OFFLOAD_PROCESSING เป็น TRUE .
  • คุณต้องบันทึกกลุ่มในกลุ่มดิสก์ที่จัดเก็บไว้อย่างสมบูรณ์บน Exadatacells
  • กลุ่มดิสก์ ASM ที่เก็บข้อมูลเซ็กเมนต์ต้องมีการตั้งค่าแอตทริบิวต์ต่อไปนี้:– compatible.rdbms =11.2.0.0.0 (หรือใหม่กว่า)– compatible.asm =11.2.0.0.0 (หรือใหม่กว่า)– cell.smart_scan_capable =TRUE

ตัวอย่างการสแกนอัจฉริยะ

ทำตามขั้นตอนต่อไปนี้ ขั้นแรกโดยที่ไม่ได้เปิดใช้งาน Smart Scan เพื่อวัดผล Smart Scan ในสถิติ

ขั้นตอนที่ 1:เชื่อมต่อกับฐานข้อมูล

เรียกใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับฐานข้อมูลของคุณด้วย SQL*Plus:

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

ขั้นตอนที่ 2:ตรวจสอบสถิติ

เรียกใช้แบบสอบถามต่อไปนี้เพื่อตรวจสอบว่าสถิติอยู่ที่หรือใกล้ศูนย์:

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ขั้นตอนที่ 3:ดำเนินการค้นหาแบบเลือกข้อมูลโดยปิดใช้งาน Smart Scan

เรียกใช้แบบสอบถามแบบเลือกข้อมูลต่อไปนี้ด้วยคำแนะนำเครื่องมือเพิ่มประสิทธิภาพที่ปิดใช้งาน Smart Scan:

SQL> select /*+ OPT_PARAM('cell_offload_processing' 'false') */ count(*)
from sales where time_id between '01-JUN-2017' and '30-OCT-2017'
and amount_sold = 1;

COUNT(*)
----------
134055

ขั้นตอนที่ 4:ตรวจสอบสถิติอีกครั้ง

เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถิติอีกครั้ง โปรดทราบว่าข้อมูลทั้งหมดที่ประมวลผลโดยเคียวรีในขั้นตอนที่ 3 (ไบต์ทั้งหมดในการอ่านจริง) จะถูกส่งคืนไปยังเซิร์ฟเวอร์ฐานข้อมูลผ่านเครือข่ายการจัดเก็บ (ไบต์การเชื่อมต่อระหว่างเซลล์ IO ทางกายภาพ)

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- -----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           759.429688
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ขั้นตอนที่ 5:รีเซ็ตสถิติ

เรียกใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อเซสชันกับฐานข้อมูลอีกครั้งเพื่อรีเซ็ตสถิติระดับวิทยานิพนธ์:

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

ขั้นตอนที่ 6:ตรวจสอบสถิติอีกครั้ง

เรียกใช้แบบสอบถามต่อไปนี้เพื่อตรวจสอบว่าสถิติอยู่ที่หรือใกล้ศูนย์:

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ขั้นตอนที่ 7:ดำเนินการค้นหาแบบเลือกข้อมูลโดยไม่ปิดใช้งาน Smart Scan

เรียกใช้คิวรีแบบใช้เลือกข้อมูลต่อไปนี้โดยไม่มีคำแนะนำเครื่องมือเพิ่มประสิทธิภาพที่ปิดใช้งาน Smart Scan:

SQL> select count(*) from sales where time_id between '01-JUN-2017'
and '30-OCT-2017'and amount_sold = 1;

COUNT(*)
-------
134055

ขั้นตอนที่ 8:ตรวจสอบสถิติ

เรียกใช้แบบสอบถามต่อไปนี้เพื่อตรวจสอบสถิติ โปรดทราบว่าคิวรียังคงทำงาน I/O ประมาณ 759 MB (ไบต์ทั้งหมดในการอ่านจริง) เช่นเดียวกับในขั้นตอนที่ 4 อย่างไรก็ตาม คราวนี้จะส่งคืนเพียง 1.7 MB ไปยังเซิร์ฟเวอร์ DB (ไบต์ IOinterconnect ทางกายภาพของเซลล์) นี่เป็นผลมาจากการทำงานของ Smart Scan ในกรณีนี้ Smart Scan ทำงานบน I/O ที่เชื่อมโยงกับการสืบค้นนี้ เนื่องจากไบต์ของ PhysicalIO ของเซลล์ที่มีสิทธิ์สำหรับการออฟโหลดเพรดิเคตเท่ากับจำนวนไบต์ที่อ่านจริงทางกายภาพ และไบต์ของการเชื่อมต่อระหว่าง IO ทางกายภาพของเซลล์ที่ส่งคืนโดยการสแกนอัจฉริยะจะเท่ากับไบต์การเชื่อมต่อระหว่าง IO ทางกายภาพของเซลล์ .

SQL> select a.name, b.value/1024/1024 mb from v$sysstat a, v$mystat b where a.statistic# = b.statistic# and (a.name in ('physical read total bytes', 'physical write total bytes','cell IO uncompressed bytes') or a.name like 'cell phy%');

NAME                                                             MB
----------------------------------------------------------------	----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           1.71562805
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         759.429688
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      1.71562805
cell IO uncompressed bytes	                                    759.429688

10 rows selected.

บทสรุป

ฟีเจอร์ Smart Scan ใน Exadata ช่วยให้การประมวลผล SQL เกิดขึ้นที่ระดับพื้นที่เก็บข้อมูล แทนที่จะเป็นระดับฐานข้อมูล เพื่อปรับปรุงประสิทธิภาพการสืบค้น SmartScan ช่วยลดปริมาณข้อมูลที่ส่งไปยังระดับฐานข้อมูล ซึ่งจะช่วยลดการใช้ CPU บนโหนดฐานข้อมูล

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม

เรียนรู้เพิ่มเติมเกี่ยวกับบริการฐานข้อมูลและบริการแอปพลิเคชัน Rackspace