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

คุณลักษณะการปรับแต่งประสิทธิภาพใหม่ของ Oracle Database 12c รีลีส 12.1.0.0:ตอนที่ 2

เผยแพร่ครั้งแรกโดย TriCore:12 เมษายน 2017

ชุดโพสต์บล็อกสองส่วนนี้ครอบคลุมคุณลักษณะการปรับแต่งประสิทธิภาพใหม่ในฐานข้อมูล Oracle® ส่วนที่ 1 กล่าวถึง OracleDatabase เวอร์ชัน 12.1.0.1 โพสต์ติดตามผลนี้ครอบคลุมเวอร์ชัน 12.1.0.2

ข้อมูลเบื้องต้นเกี่ยวกับการจัดเก็บคอลัมน์ในหน่วยความจำ

ที่เก็บคอลัมน์ในหน่วยความจำ (ที่เก็บคอลัมน์ IM) เป็นพื้นที่ทางเลือกของ SystemGlobal Area (SGA) ที่เก็บสำเนาของตาราง พาร์ติชั่น และออบเจกต์ฐานข้อมูลอื่นๆ ในรูปแบบคอลัมน์ที่ปรับให้เหมาะสมสำหรับการสแกนอย่างรวดเร็ว การจัดเก็บคอลัมน์ IM เร่งประสิทธิภาพฐานข้อมูลของแอปพลิเคชันการวิเคราะห์ คลังข้อมูล และการประมวลผลธุรกรรมออนไลน์ (OLTP)

วิธีการจัดเก็บคอลัมน์ IM

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

คุณสามารถเปิดใช้งานที่เก็บคอลัมน์ IM สำหรับวัตถุฐานข้อมูลต่อไปนี้:

  • ตาราง
  • มุมมองที่เป็นเนื้อหา
  • พาร์ทิชัน
  • ตารางสเปซ

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

ประโยชน์ด้านประสิทธิภาพของการใช้ที่เก็บคอลัมน์ IM

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

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

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

คุณลักษณะการปรับแต่งประสิทธิภาพใหม่ของ Oracle Database 12c รีลีส 12.1.0.0:ตอนที่ 2

ที่มาของรูปภาพ :Oracle Learning Library วิดีโอ YouTube:Oracle Database 12cdemos:In-Memory Column Store ArchitectureOverview

การประเมินขนาดที่ต้องการของที่เก็บคอลัมน์ IM

ที่เก็บคอลัมน์ IM รองรับวิธีการบีบอัดดังต่อไปนี้:

วิธีการบีบอัด ลำดับการบีบอัดข้อมูลในหน่วยความจำ การเปรียบเทียบการบีบอัดข้อมูลในหน่วยความจำ
ไม่มีการบีบอัดข้อมูล 1 ไม่มี
MEMCOMPRESS สำหรับ DML 2 (บีบอัดน้อยที่สุด) B<ทั้งหมด
บันทึกสำหรับคำถามต่ำ 3 B
บันทึกสำหรับคำถามสูง 4 C
MEMCOMPRESS สำหรับความจุต่ำ 5 D
MEMCOMPRESS สำหรับความจุสูง 6 (บีบอัดสูง) ทั้งหมด


ตัวอย่างต่อไปนี้แสดงวิธีเปิดใช้งาน oe.product_information tablefor ที่เก็บคอลัมน์ IM และระบุวิธีการบีบอัด MEMCOMPRESS FOR CAPACITY HIGH :

SQL>ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR CAPACITY HIGH;

การปรับขนาดที่เก็บคอลัมน์ IM

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

ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดขนาดของที่เก็บคอลัมน์ IM:

  1. ตั้งค่า INMEMORY_SIZE พารามิเตอร์เริ่มต้นตามขนาดที่ต้องการ

    ค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ 0 ซึ่งหมายความว่าไม่มีการใช้ที่เก็บคอลัมน์ IM หากต้องการเปิดใช้งานที่เก็บคอลัมน์ IM ให้ตั้งค่าพารามิเตอร์นี้เป็นค่า anonzero

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

  2. หลังจากที่คุณกำหนดขนาดของที่เก็บคอลัมน์ IM แล้ว คุณต้องรีสตาร์ทอินสแตนซ์ฐานข้อมูลของคุณเพื่อเปิดใช้งานการจัดเก็บวัตถุฐานข้อมูล

    ตัวอย่างต่อไปนี้แสดงวิธีกำหนดขนาดของที่เก็บคอลัมน์ IM เป็น 100 GB:

     ALTER SYSTEM SET INMEMORY_SIZE = 100G;
    

รองรับการจัดการสำหรับการจัดเก็บคอลัมน์ IM

รายงานการตรวจสอบ SQL รายงานประวัติเซสชันที่ใช้งานอยู่ (ASH) และรายงานพื้นที่เก็บข้อมูลปริมาณงานอัตโนมัติ (AWR) จะแสดงสถิติสำหรับการดำเนินการต่างๆ ในหน่วยความจำ

โหมดการแคชฐานข้อมูล

โหมดแคชฐานข้อมูลมีสองโหมด:

  • โหมดแคชฐานข้อมูลเริ่มต้นที่ Oracle Database เวอร์ชันก่อนหน้าใช้
  • โหมดบังคับแคชของฐานข้อมูลเต็มรูปแบบซึ่งเพิ่งมาใหม่ใน Oracle Database 12cRelease 1 (12.1.0.2)

โหมดการแคชฐานข้อมูลเริ่มต้น

ตามค่าเริ่มต้น Oracle Database จะใช้โหมดแคชฐานข้อมูลเริ่มต้นเมื่อทำการสแกนตารางแบบเต็ม

หากอินสแตนซ์ฐานข้อมูล Oracle ระบุว่ามีพื้นที่เพียงพอในการแคชฐานข้อมูลทั้งหมดในบัฟเฟอร์แคชและมีประโยชน์ต่อ Doso อินสแตนซ์จะแคชฐานข้อมูลทั้งหมดโดยอัตโนมัติในบัฟเฟอร์แคช

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

  • ตารางที่เล็กกว่าที่มีขนาดบัฟเฟอร์แคชน้อยกว่าสองเปอร์เซ็นต์ :โหลดตารางเหล่านี้ลงในหน่วยความจำ
  • โต๊ะขนาดกลาง :วิเคราะห์ช่วงเวลาระหว่างการสแกนตารางล่าสุดและการประทับเวลาของบัฟเฟอร์แคช หากขนาดของตารางที่ใช้ซ้ำในการสแกนตารางครั้งล่าสุดมากกว่าขนาดบัฟเฟอร์แคชที่เหลืออยู่ ให้แคชตาราง
  • โต๊ะใหญ่ :ไม่โหลดสิ่งเหล่านี้ลงในหน่วยความจำเว้นแต่คุณจะประกาศตารางสำหรับ KEEP . อย่างชัดเจน บัฟเฟอร์พูล

บังคับโหมดการแคชฐานข้อมูลแบบเต็ม

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

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

Oracle Database โหลดไฟล์ข้อมูลทั้งหมดลงในบัฟเฟอร์แคชเมื่อมีการเข้าถึงใหม่ ซึ่งรวมถึง NOCACHE LOB และ LOB ที่ใช้ Oracle Database SecureFiles

คุณลักษณะการปรับแต่งประสิทธิภาพใหม่ของ Oracle Database 12c รีลีส 12.1.0.0:ตอนที่ 2

ที่มาของรูปภาพ :DB In-MemoryCaching แบบเต็ม

เมื่อใดควรใช้โหมดการแคชฐานข้อมูลแบบเต็มแบบบังคับ

ลองใช้โหมดบังคับแคชฐานข้อมูลแบบเต็มในสถานการณ์ต่อไปนี้:

  • ขนาดฐานข้อมูลแบบลอจิคัล (หรือพื้นที่ที่ใช้จริง) มีขนาดเล็กกว่าบัฟเฟอร์แคชแต่ละรายการของอินสแตนซ์ฐานข้อมูลแต่ละรายการในสภาพแวดล้อม Oracle RealApplication Clusters (RAC) คำแนะนำนี้ยังใช้กับฐานข้อมูล tonon-Oracle RAC ด้วย
  • ขนาดฐานข้อมูลลอจิคัลมีขนาดเล็กกว่า 80% ของขนาดแคชบัฟเฟอร์รวมของอินสแตนซ์ฐานข้อมูลทั้งหมดสำหรับเวิร์กโหลดที่มีการแบ่งพาร์ติชันอย่างดี (การเข้าถึงโดยอินสแตนซ์) ในสภาพแวดล้อม Oracle RAC
  • ฐานข้อมูลใช้ SGA_TARGET หรือ MEMORY_TARGET .
  • The NOCACHE ต้องแคช LOB NOCACHE LOB จะไม่ถูกแคชเว้นแต่จะบังคับให้ใช้การแคชฐานข้อมูลเต็มรูปแบบ

ในสามสถานการณ์แรก คุณควรตรวจสอบประสิทธิภาพของระบบเป็นระยะเพื่อตรวจสอบว่าตัวบ่งชี้ประสิทธิภาพตรงตามความคาดหวังของคุณ

หมายเหตุ :เมื่ออินสแตนซ์ฐานข้อมูล Oracle RAC หนึ่งใช้โหมดการแคชฐานข้อมูลแบบเต็ม อินสแตนซ์ฐานข้อมูลอื่นๆ ทั้งหมดใน Oracle RACenvironment จะใช้โหมดนี้ด้วย ในสภาพแวดล้อมที่มีผู้เช่าหลายราย โหมดบังคับแคชของฐานข้อมูลแบบเต็มจะมีผลกับ CDB ทั้งหมด รวมถึง PDB ทั้งหมดด้วย

ตั้งค่าและตรวจสอบโหมดแคชฐานข้อมูล

ขั้นแรก ตรวจสอบฐานข้อมูลและขนาดหน่วยความจำ คุณสามารถยกเว้น SYSAUX tablespace ดังแสดงในตัวอย่างต่อไปนี้:

SQL> col size_mb format 9999
SQL> SELECT sum(bytes)/1024/1024 seg_size_mb FROM dba_segments where tablespace_name != 'SYSAUX';
SEG_SIZE_MB
-----------
4971

ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบขนาดของบัฟเฟอร์แคช:

SQL> SELECT round(sum(cnum_set * blk_size)/1024/1024) size_mb FROM X$KCBWDS;
SIZE_MB
-------
5283

ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดค่าฐานข้อมูลของคุณบังคับการแคชฐานข้อมูลแบบเต็ม:

SQL> startup mount;
Database mounted.

SQL> ALTER DATABASE FORCE FULL DATABASE CACHING;
Database altered.

SQL> SELECT force_full_db_caching FROM v$database;
FORslug: '' ---YES

SQL> alter database open;
Database altered.

ใช้ขั้นตอนต่อไปนี้เพื่อตรวจสอบว่ามีการเปิดใช้งานโหมดการแคชฐานข้อมูลแบบเต็ม:

  1. ใช้คำสั่งต่อไปนี้เพื่อค้นหา V$DATABASE มุมมอง:

     SQL>SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;
    

    ผลลัพธ์คือ YES หรือ NO .

  2. หากต้องการเปิดใช้งานโหมดบังคับแคชฐานข้อมูลแบบเต็ม ให้ใช้ ALTER DATABASE . ต่อไปนี้ คำสั่ง:

     ALTER DATABASE FORCE FULL DATABASE CACHING;
    

    คำสั่งส่งคืนการยืนยันต่อไปนี้:

     Database altered.
    
  3. หากต้องการปิดใช้งานการบังคับแคชฐานข้อมูลแบบเต็ม ให้ใช้คำสั่งต่อไปนี้:

     SQL> ALTER DATABASE NO FORCE FULL DATABASE CACHING;
    

    คำสั่งส่งคืนการยืนยันต่อไปนี้:

     Database altered.
    

บทสรุป

โดยสรุป ที่เก็บคอลัมน์ IM ช่วยลดเวลาดำเนินการสำหรับคำสั่ง DML และบังคับให้โหมดแคชฐานข้อมูลเต็มรูปแบบมีการปรับปรุงประสิทธิภาพที่สำคัญ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะการปรับแต่งประสิทธิภาพใหม่ของ Oracle Database โปรดดูรายงานที่ Oracle Enterprise Manager (OEM) มีให้

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

ข้อมูลอ้างอิง

แหล่งข้อมูลต่อไปนี้ถูกใช้เป็นข้อมูลอ้างอิงสำหรับโพสต์ในบล็อกนี้:

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

  • ฐานข้อมูลแคชในหน่วยความจำแบบเต็ม

  • การสาธิต Oracle Database 12c:ภาพรวมสถาปัตยกรรมการจัดเก็บคอลัมน์ในหน่วยความจำ