คำถามติดแท็ก cache

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

5
ทำไมฉันจะไม่ใช้ตัวเลือก SQL Server“ ปรับให้เหมาะสมสำหรับปริมาณงานเฉพาะกิจ”?
ฉันได้อ่านบทความที่ยอดเยี่ยมเกี่ยวกับการแคชแผน SQL Server โดย Kimberly Tripp เช่นนี้: http://www.sqlskills.com/blogs/kimberly/plan-cache-and-optimizing-for-adhoc-workloads/ ทำไมถึงมีตัวเลือกในการ "เพิ่มประสิทธิภาพสำหรับปริมาณงานแบบเฉพาะกิจ"? สิ่งนี้ไม่ควรเกิดขึ้นหรือ ไม่ว่านักพัฒนาจะใช้ ad-hoc SQL หรือไม่ทำไมคุณไม่เปิดใช้งานตัวเลือกนี้ในทุกอินสแตนซ์ที่รองรับ (SQL 2008+) ซึ่งจะช่วยลดการขยายตัวของแคช?

3
พารามิเตอร์การดมกลิ่นเทียบกับตัวแปรเทียบกับการคอมไพล์ vs ออปติไมซ์สำหรับ UNKNOWN
ดังนั้นเราจึงใช้เวลานาน proc ทำให้เกิดปัญหาเมื่อเช้านี้ (30 วินาที + เวลาทำงาน) เราตัดสินใจตรวจสอบเพื่อดูว่าการดมพารามิเตอร์เป็นการตำหนิหรือไม่ ดังนั้นเราเขียน proc ใหม่และตั้งค่าพารามิเตอร์ขาเข้าเป็นตัวแปรเพื่อกำจัดพารามิเตอร์การดมกลิ่น วิธีการทดลอง / จริง แบมปรับปรุงเวลาแบบสอบถาม (น้อยกว่า 1 วินาที) เมื่อดูที่แผนแบบสอบถามการปรับปรุงจะพบในดัชนีที่ไม่ได้ใช้ เพียงเพื่อยืนยันว่าเราไม่ได้รับผลบวกผิดพลาดเราได้ dbcc freeproccache ใน proc และรันซ้ำเพื่อดูว่าผลลัพธ์ที่ได้รับการปรับปรุงจะเหมือนเดิมหรือไม่ แต่เพื่อความประหลาดใจของเรา proc ดั้งเดิมยังคงทำงานช้า เราลองอีกครั้งด้วย WITH RECOMPILE ยังคงช้า (เราลองคอมไพล์อีกครั้งในการโทรไปยัง proc และภายใน proc itelf) เรายังรีสตาร์ทเซิร์ฟเวอร์ (เห็นได้ชัดว่ากล่อง dev) ดังนั้นคำถามของฉันคือสิ่งนี้ ... พารามิเตอร์การดมกลิ่นสามารถตำหนิได้อย่างไรเมื่อเราได้รับแบบสอบถามช้าแบบเดียวกันกับแคชแผนว่างเปล่า ... ไม่ควรมีพารามิเตอร์ใด ๆ ในการดมกลิ่น ??? เรากำลังได้รับผลกระทบจากสถิติตารางที่ไม่เกี่ยวข้องกับแคชแผนหรือไม่ และถ้าเป็นเช่นนั้นทำไมการตั้งค่าพารามิเตอร์ขาเข้าเป็นตัวแปรช่วยได้อย่างไร …


3
ค่าใช้จ่ายในการตรวจสอบแคชแบบสอบถามบ่อยครั้งคุ้มค่าหรือไม่
ขณะนี้ฉันกำลังทำงานกับฐานข้อมูล MySQL ที่เราเห็นการตรวจสอบความถูกต้องจำนวนมากจากแคชแบบสอบถามเป็นหลักเนื่องจากคำสั่ง INSERT, DELETE และ UPDATE จำนวนมากที่ถูกเรียกใช้งานในหลาย ๆ ตาราง สิ่งที่ฉันพยายามตรวจสอบคือการมีประโยชน์ใด ๆ หรือไม่ที่จะอนุญาตให้ใช้แคชแบบสอบถามสำหรับคำสั่ง SELECT ที่กำลังเรียกใช้กับตารางเหล่านี้ เนื่องจากพวกเขาได้รับการทำให้ใช้งานไม่ได้อย่างรวดเร็วดูเหมือนว่าสิ่งที่ดีที่สุดคือการใช้ SQL_NO_CACHE ในคำสั่ง SELECT ด้วยตารางเหล่านี้ ค่าใช้จ่ายในการตรวจสอบความถูกต้องบ่อยครั้งเป็นสิ่งที่คุ้มค่าหรือไม่? แก้ไข: ตามคำขอของผู้ใช้ @RolandoMySQLDBA ด้านล่างนี่คือข้อมูลเกี่ยวกับ MyISAM และ INNODB InnoDB ขนาดข้อมูล: 177.414 GB ขนาดดัชนี: 114.792 GB ขนาดโต๊ะ: 292.205 GB MyISAM ขนาดข้อมูล: 379.762 GB ขนาดดัชนี: 80.681 GB ขนาดโต๊ะ: 460.443 GB ข้อมูลเพิ่มเติม: เวอร์ชัน: …

2
การแคชดัชนี PostgreSQL
ฉันมีปัญหาในการค้นหาคำอธิบาย 'lay' ของวิธีการจัดทำดัชนีแคชใน PostgreSQL ดังนั้นฉันต้องการตรวจสอบความเป็นจริงของสมมติฐานเหล่านี้ทั้งหมดหรือทั้งหมด: ดัชนี PostgreSQL เช่นแถวอยู่บนดิสก์ แต่อาจถูกแคช ดัชนีอาจอยู่ในแคชทั้งหมดหรือไม่ทั้งหมด ไม่ว่าจะเป็นแคชหรือไม่ขึ้นอยู่กับความถี่ในการใช้งาน (ตามที่กำหนดโดยตัววางแผนคิวรี) ด้วยเหตุนี้ดัชนี 'สมเหตุสมผล' ส่วนใหญ่จึงจะอยู่ในแคชตลอดเวลา ดัชนีอยู่ในแคชเดียวกัน ( buffer cache?) เป็นแถวดังนั้นพื้นที่แคชที่ใช้โดยดัชนีจะไม่สามารถใช้ได้กับแถว แรงจูงใจของฉันสำหรับการทำความเข้าใจนี้ตามมาจากคำถามอื่นที่ฉันถามว่ามีข้อเสนอแนะว่าสามารถใช้ดัชนีบางส่วนในตารางซึ่งข้อมูลส่วนใหญ่จะไม่สามารถเข้าถึงได้ ก่อนดำเนินการนี้ฉันต้องการให้ชัดเจนว่าการใช้ดัชนีบางส่วนทำให้ได้เปรียบสองประการ: เราลดขนาดของดัชนีในแคชเพิ่มพื้นที่ว่างสำหรับแถวในแคช เราลดขนาดของ B-Tree ส่งผลให้เกิดการตอบแบบสอบถามที่รวดเร็วขึ้น

2
ค้นหาขนาดที่ไม่บีบอัดของตารางทั้งหมดในฐานข้อมูล
ใน Dynamics AX มีกลไกการแคชซึ่งสามารถกำหนดตารางให้โหลดลงในหน่วยความจำและแคชได้ แคชนี้ จำกัด จำนวน KB ไว้เพื่อป้องกันปัญหาหน่วยความจำ การตั้งค่าที่ฉันกำลังพูดถึงถูกเรียกentiretablecacheและโหลดทั้งตารางในหน่วยความจำทันทีที่มีการร้องขอบันทึกเดียว จนถึงเมื่อเร็ว ๆ นี้เราใช้สคริปต์บางตัวเพื่อตรวจสอบขนาดของตารางที่มีการตั้งค่านี้เพื่อดูว่าขนาดตารางเกินขีด จำกัด นี้หรือไม่ อย่างไรก็ตามตอนนี้การบีบอัดเริ่มเข้ามาเล่นและสิ่งต่าง ๆ เช่นsp_spaceusedหรือsys.allocation_unitsดูเหมือนจะรายงานพื้นที่ที่ใช้จริงโดยข้อมูลที่บีบอัด เห็นได้ชัดว่าแอ็พพลิเคชันเซิร์ฟเวอร์ทำงานกับข้อมูลที่ไม่มีการบีบอัดดังนั้นขนาดข้อมูลบนดิสก์ใน SQL Server นั้นไม่เกี่ยวข้อง ฉันต้องการขนาดจริงข้อมูลที่ไม่มีการบีบอัดจะมี ฉันรู้เกี่ยวกับsp_estimate_data_compression_savingsแต่อย่างที่ชื่อบอกนี่เป็นเพียงการประมาณ ฉันต้องการมีขนาดที่ถูกต้องที่สุด วิธีเดียวที่ฉันคิดได้ก็คือ SQL แบบไดนามิกที่ซับซ้อนที่สร้างตารางที่ไม่มีการบีบอัดด้วยโครงสร้างเดียวกับตารางที่ถูกบีบอัดแทรกข้อมูลที่บีบอัดในตารางเงานั้นแล้วตรวจสอบขนาดของตารางเงานั้น จำเป็นต้องพูดว่านี่เป็นบิตที่น่าเบื่อและใช้เวลาสักครู่ในการรันบนฐานข้อมูลหลายร้อย GB Powershell อาจเป็นตัวเลือก แต่ฉันไม่ต้องการวนซ้ำทุกตารางเพื่อดำเนินการselect *กับพวกเขาเพื่อตรวจสอบขนาดในสคริปต์เนื่องจากอาจทำให้แคชล้นและอาจใช้เวลานานเกินไป กล่าวโดยย่อฉันต้องการวิธีเพิ่มขนาดสำหรับแต่ละตารางเนื่องจากจะไม่มีการบีบอัดและมีการแตกแฟรกเมนต์ออกมาจากสมการที่นำเสนอไปยังแอปพลิเคชันหากเป็นไปได้ ฉันเปิดกว้างกับแนวทางที่แตกต่างกัน T-SQL เป็นที่ต้องการมากกว่า แต่ฉันไม่ได้ต่อต้าน Powershell หรือวิธีการสร้างสรรค์อื่น ๆ สมมติว่าบัฟเฟอร์ในแอปพลิเคชันคือขนาดของข้อมูล bigint มักมีขนาดเท่ากับ bigint เสมอและประเภทข้อมูลอักขระคือ 2 ไบต์ต่ออักขระ (unicode) …

1
ความแตกต่างระหว่าง FreeProcCache และ FreeSystemCache
ขณะนี้ฉันรันDBCC FREEPROCCACHEเมื่อฉันต้องการลบข้อมูลออกจากบัฟเฟอร์พูลระหว่างการรันเคียวรี SQL แต่ผมได้รับการตรวจสอบนี้ Technet DBCC FREESYSTEMCACHEอ้างอิงบทความ แคชอะไรที่ไม่FREESYSTEMCACHEเช็ดFREEPROCCACHE?
12 sql-server  cache 

1
Qcache_free_memory ยังไม่เต็ม แต่ฉันได้รับ Qcache_lowmem_prunes จำนวนมาก
ฉันเพิ่งเริ่มเล่นน้ำกับแคชแบบสอบถามสำหรับ CMS ของเรา ทุกคนสามารถบอก (หรืออย่างน้อยให้เดาดี) เหตุผลที่ผมได้รับเป็นจำนวนมากของQcache_lowmem_prunesเมื่อมากกว่าครึ่งหนึ่งของQcache_free_memoryฟรี? query_cache_size=512M query_cache_limit=1M นี่คือลักษณะที่จะดูแลประมาณ 12 ชั่วโมง show status like '%qcach%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | Qcache_free_blocks | 10338 | | Qcache_free_memory | 297348320 | | Qcache_hits | 10254104 | | Qcache_inserts | 6072945 | | Qcache_lowmem_prunes | 725279 | | Qcache_not_cached | …


3
วิธีเพิ่มประสิทธิภาพของ Virgin Query ใน MS SQL Server
ฉันมีเว็บไซต์ ASP.NET ที่เป็นเจ้าของแคชข้อมูลและข้อมูลไม่เปลี่ยนแปลงเป็นเวลานานดังนั้นจึงไม่จำเป็นต้องสืบค้น SQL Server ครั้งที่สองด้วยแบบสอบถามเดียวกัน ฉันต้องปรับปรุงประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) ที่ไปยัง SQL Server นั้น แบบสอบถามบางแห่งประมวลผลข้อมูลมากจนอาจทำให้ SQL Server ใช้งานtempdbได้ ฉันไม่ใช้ตัวแปร temp table หรือ temp tables ดังนั้น SQL Server ตัดสินใจที่จะใช้tempdbด้วยตนเองทุกครั้งที่ต้องการ ขนาดฐานข้อมูลของฉันคือ 16Gb ฉันมี RAM จริง 32Gb อยู่ในเครื่องเซิร์ฟเวอร์ ฉันเข้าใจว่ากลยุทธ์การแคช MS SQL Server พยายามเก็บข้อมูลใน RAM เพื่อเพิ่มความเร็วของการค้นหาที่คล้ายกันหากต้องการโหลดข้อมูลเดียวกันอีกครั้ง นอกจากนั้นมันจะพยายามใช้ RAM ที่มีอยู่แทน tempdb เพื่อเพิ่มความเร็วในการทำงานโดยไม่ทำให้เกิดการเข้าถึงดิสก์ ฉันคิดว่าเมื่อแบบสอบถามที่ต้องการเก็บบางสิ่งใน tempdb SQL Server มาและมี …

1
รายการที่ชัดเจนของขั้นตอนสำหรับการทดสอบพื้นฐานของ SQL Server?
ก่อนเรียกใช้การทดสอบประสิทธิภาพ / พื้นฐานสำหรับแอปที่ใช้ SQL Server ฉันต้องการให้สามารถตั้งค่าอินสแตนซ์เป็นสถานะ "ใหม่ทั้งหมด" โดยไม่ต้องเริ่มต้นอินสแตนซ์ใหม่ มีขั้นตอนที่ฉันมักจะทำตาม แต่ฉันต้องการสร้างรายการที่ชัดเจนที่อยู่ในลำดับที่ถูกต้องและไม่มีขั้นตอนซ้ำซ้อน รายการขั้นตอนนี้ทำให้การตั้งค่า SQL Server เป็นสถานะ "สะอาด" หรือไม่ ลำดับลอจิก / ถูกต้องหรือไม่? มีขั้นตอนที่ซ้ำซ้อนหรือไม่? CHECKPOINT -- Write all dirty pages DBCC DROPCLEANBUFFERS -- All should be clean after checkpoint? DBCC FREEPROCCACHE -- Clear the plan cache DBCC FREESYSTEMCACHE -- Is this necessary after FREEPROCCACHE? …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.