เกี่ยวกับการพบข้อมูลในแคช

เมื่อใช้งานการแคช ระบบจะประเมินการสืบค้นแต่ละรายการเพื่อกำหนดว่ามีคุณสมบัติเหมาะสมสำหรับการพบข้อมูลในแคชหรือไม่

การพบข้อมูลในแคชหมายความว่า Oracle Analytics Cloud สามารถใช้แคชเพื่อตอบรับการสืบค้นและไม่ได้ไปที่ฐานข้อมูล Oracle Analytics Cloud สามารถใช้แคชการสืบค้นเพื่อตอบรับการสืบค้นในการสรุปรวมระดับเดียวกันหรือที่สูงกว่า

แฟคเตอร์ต่างๆ จะกำหนดว่าพบข้อมูลในแคชหรือไม่ ตารางด้านล่างจะอธิบายแฟคเตอร์ต่างๆ เหล่านี้

แฟคเตอร์หรือกฎ คำอธิบาย

ชุดย่อยของคอลัมน์ในลิสต์ SELECT ต้องตรงกัน

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

กฎนี้จะอธิบายข้อกำหนดขั้นต่ำสำหรับการพบข้อมูลในแคช แต่การตรงตามกฎนี้ไม่ได้รับประกันการพบข้อมูลในแคช กฎอื่นๆ ที่แสดงในตารางนี้จะใช้ด้วยเช่นกัน

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

Oracle Analytics Cloud สามารถคำนวณเอ็กซ์เพรสชันในผลลัพธ์ที่แคชเพื่อตอบรับการสืบค้นใหม่ แต่คอลัมน์ทั้งหมดต้องอยู่ในผลลัพธ์ที่แคช ตัวอย่างเช่น การสืบค้น

SELECT product, month, averageprice FROM sales WHERE year = 2000

พบข้อมูลแคชในการสืบค้น:

SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000

เนื่องจาก averageprice สามารถคำนวณได้จาก dollars และ unitsales (averageprice = dollars/unitsales)

ส่วนคำสั่ง WHERE ต้องเป็นชุดย่อยเดียวกันหรือแบบลอจิคัลตามความหมาย

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

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

  • ชุดย่อยของค่าลิสต์ IN การสืบค้นที่ขออีลิเมนต์ IN ลดลงแสดงคุณสมบัติการสืบค้นที่แคชสำหรับการพบข้อมูลในแคช ตัวอย่างเช่น การสืบค้นต่อไปนี้:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('EAST', 'WEST')

    มีคุณสมบัติเหมาะสมเป็นการพบข้อมูลในการสืบค้นที่แคชต่อไปนี้:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('NORTH', 'SOUTH', 'EAST', 'WEST')
  • โดยประกอบด้วยข้อจำกัด OR ที่น้อยว่า (แต่เหมือนกัน) ผลลัพธ์ที่แคช

  • ประกอบด้วยชุดย่อยแบบลอจิคัลของการเปรียบเทียบค่าคงที่ ตัวอย่างเช่น คำสั่งปฏิบัติงานต่อไปนี้:

    WHERE revenue < 1000

    มีคุณสมบัติเหมาะสมเป็นการพบข้อมูลในแคชในการสืบค้นเปรียบเทียบที่มีคำสั่งปฏิบัติงาน:

    WHERE revenue < 5000
  • ไม่มีส่วนคำสั่ง WHERE หากการสืบค้นไม่ได้แคชส่วนคำสั่ง WHERE ไว้ การสืบค้นที่ตรงตามกฎการพบข้อมูลในแคชอื่นๆ ทั้งหมดจะมีคุณสมบัติเป็นการพบข้อมูลในแคชโดยไม่คำนึงถึงส่วนคำสั่ง WHERE

นอกจากนี้ คอลัมน์ที่ใช้ในส่วนคำสั่ง WHERE ต้องอยู่ในลิสต์การประมาณการ ตัวอย่างเช่น การสืบค้นต่อไปนี้:

SELECT employeename
FROM employee, geography
WHERE region in ('EAST', 'WEST')

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

การสืบค้นไดเมนชันอย่างเดียวต้องเป็นแบบตรงกันทั้งหมด

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

การสืบค้นที่มีฟังก์ชันพิเศษต้องเป็นแบบตรงกันทั้งหมด

การสืบค้นอื่นๆ ที่มีฟังก์ชันพิเศษ เช่น ฟังก์ชันชุดเวลา (AGO, TODATE และ PERIODROLLING), ฟังก์ชันขีดจำกัดและออฟเซ็ต (OFFSET และ FETCH), ฟังก์ชันความสัมพันธ์ (ISANCESTOR, ISLEAF, ISROOT และ ISSIBLING), ฟังก์ชันการสรุปรวมภายนอก และเมตริคฟิลเตอร์ทั่วไปต้องเป็นการจับคู่ที่ตรงกันทั้งหมดที่มีคอลัมน์การประมาณการในการสืบค้นที่แคช ในกรณีนี้ ฟิลเตอร์ต้องเป็นแบบตรงกันทั้งหมด สำหรับเมตริคฟิลเตอร์ หากสามารถบันทึกทับเมตริคฟิลเตอร์เป็นส่วนคำสั่ง WHERE แคชชุดย่อยอาจได้รับการปรับปรุง

ชุดตารางแบบลอจิคัลต้องเป็นแบบตรงกันทั้งหมด

เพื่อให้มีคุณสมบัติเป็นการพบข้อมูลในแคชทั้งหมด การสืบค้นขาเข้าทั้งหมดต้องมีชุดตารางแบบลอจิคัลเดียวกันกับรายการแคช กฎนี้หลีกเลี่ยงการการพบข้อมูลในแคชที่ไม่ถูกต้อง ตัวอย่างเช่น SELECT * FROM product ไม่ตรงกับ SELECT * FROM product, sales

ค่าตัวแปรเซสชันต้องตรงกันทั้งหมด รวมทั้งตัวแปรเซสชันการรักษาความปลอดภัย

หากคำสั่ง SQL ลอจิคัลหรือ SQL ฟิสิคัลอ้างถึงตัวแปรเซสชันใดๆ ค่าตัวแปรเซสชันต้องตรงกันทั้งหมด มิฉะนั้น การแคชจะไม่พบข้อมูล

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

เกี่ยวกับเงื่อนไขการรวมเทียบเท่า

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

แอททริบิว DISTINCT ต้องมีค่าเหมือนกัน

หากการสืบค้นที่แคชกำจัดเรคคอร์ดที่ซ้ำกันด้วยการประมวลผล DISTINCT (ตัวอย่างเช่น SELECT DISTINCT...) คำขอสำหรับคอลัมน์ที่แคชต้องมีการประมวลผล DISTINCT รวมอยู่ คำขอสำหรับคอลัมน์เดียวกันที่ไม่มีการประมวลผล DISTINCT จะไม่พบข้อมูลในแคช

การสืบค้นต้องมีระดับการสรุปรวมที่ใช้ร่วมกันได้

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

SELECT supplier, region, city, qtysold
FROM suppliercity

การสืบค้นต่อไปนี้ขอปริมาณที่ขายที่ระดับเมือง:

SELECT city, qtysold
FROM suppliercity

การสืบค้นที่สองส่งผลให้มีการพบข้อมูลในแคชในการสืบค้นแรก

การสรุปรวมเพิ่มเติมแบบจำกัด

ตัวอย่างเช่น หากมีการแคชการสืบค้นที่มีคอลัมน์ qtysold คำขอสำหรับ RANK(qtysold) จะทำให้ไม่มีการพบข้อมูลในแคช นอกจากนี้ การสืบค้นที่ขอ qtysold ที่ระดับประเทศสามารถเรียกการพบข้อมูลในแคชจากการสืบค้นที่ขอ qtysold ที่ระดับประเทศ ภูมิภาคได้ด้วย

ส่วนคำสั่ง ORDER BY ต้องประกอบด้วยคอลัมน์ในลิสต์ Select

การสืบค้นที่สั่งโดยคอลัมน์ที่ไม่มีอยู่ในลิสต์ Select จะทำให้ไม่พบข้อมูลในแคช

การวินิจฉัยลักษณะการพบข้อมูลในแคช

เพื่อประเมินลักษณะการพบข้อมูลในแคชที่มีประสิทธิภาพยิ่งขึ้น ให้ตั้งค่าตัวแปรเซสชัน ENABLE_CACHE_DIAGNOSTICS เป็น 4 ตามที่แสดงในตัวอย่างต่อไปนี้:

ENABLE_CACHE_DIAGNOSTICS=4