คำถามติดแท็ก index-statistics

3
เมื่อใดควรสร้างสถิติแทนการสร้างดัชนี
ฉันได้พบข้อมูลมากมายเกี่ยวกับสิ่งที่ STATISTICS : วิธีการดูแลรักษาวิธีการสร้างด้วยตนเองหรือโดยอัตโนมัติจากแบบสอบถามหรือดัชนีและอื่น ๆ แต่ผมได้รับไม่สามารถที่จะหาใด ๆคำแนะนำหรือ "วิธีปฏิบัติที่ดีที่สุด" ข้อมูลเกี่ยวกับเมื่อเพื่อสร้าง: สถานการณ์ใดที่ได้ประโยชน์จากวัตถุสถิติที่สร้างขึ้นด้วยตนเองมากกว่าจากดัชนี ฉันได้เห็นสถิติที่สร้างขึ้นด้วยตนเองที่กรองแล้วช่วยสอบถามในตารางที่แบ่งพาร์ติชัน (เนื่องจากสถิติที่สร้างขึ้นสำหรับดัชนีครอบคลุมทั้งตารางและไม่ใช่ต่อพาร์ติชัน - ความสุกใส!) แต่แน่นอนว่าต้องมีสถานการณ์อื่น ๆ ที่จะได้รับประโยชน์จากวัตถุสถิติ ไม่ต้องการรายละเอียดของดัชนีหรือไม่คุ้มค่ากับการบำรุงรักษาดัชนีหรือเพิ่มโอกาสในการบล็อค / ล็อคตาย @JonathanFite ในความคิดเห็นพูดถึงความแตกต่างระหว่างดัชนีและสถิติ: ดัชนีจะช่วยให้ SQL ค้นหาข้อมูลได้เร็วขึ้นด้วยการสร้างการค้นหาที่เรียงลำดับแตกต่างจากตาราง สถิติช่วยให้ SQL พิจารณาว่าจำเป็นต้องใช้หน่วยความจำ / ความพยายามเท่าใดในการตอบแบบสอบถาม นั่นคือข้อมูลที่ดีส่วนใหญ่เป็นเพราะมันช่วยให้ฉันชี้แจงคำถามของฉัน: วิธีการที่ไม่ทราบนี้ (หรือข้อมูลทางเทคนิคอื่น ๆ ใด ๆ เกี่ยวกับสิ่งที่และวิธีการ s ที่เกี่ยวข้องกับพฤติกรรมและธรรมชาติของSTATISTICS) ช่วยตรวจสอบเมื่อให้เลือกCREATE STATISTICSมากกว่าCREATE INDEXโดยเฉพาะอย่างยิ่งเมื่อมีการสร้างดัชนีจะสร้างที่เกี่ยวข้องกับSTATISTICSวัตถุ? สถานการณ์ใดที่จะให้บริการที่ดีขึ้นโดยมีเพียงข้อมูลสถิติและไม่มีดัชนี มันจะเป็นซุปเปอร์ duper ประโยชน์ถ้าเป็นไปได้ที่จะมีตัวอย่างการทำงานของสถานการณ์ที่วัตถุที่เป็นแบบที่ดีกว่าSTATISTICSINDEX เนื่องจากฉันเป็นผู้เรียนด้วยสายตา / นักคิดฉันคิดว่ามันอาจช่วยให้เห็นความแตกต่างระหว่างSTATISTICSและINDEXes เคียงข้างกันเป็นวิธีที่เป็นไปได้ในการช่วยกำหนดว่าเมื่อใดSTATISTICSจะเป็นทางเลือกที่ดีกว่า …

3
เครื่องมือเพิ่มประสิทธิภาพการสืบค้น MySQL อ่านสถิติดัชนีจากที่ใด
ฉันพยายามหาว่าตัวเพิ่มประสิทธิภาพ MySQL ได้รับรายการดัชนีที่มีอยู่ในตารางหรือไม่เมื่อประเมินค่าแบบสอบถาม (เตรียม) แบบสอบถาม

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

1
สถิติเป็นข้อมูลล่าสุด แต่การประมาณการไม่ถูกต้อง
เมื่อฉันฉันจะdbcc show_statistics ('Reports_Documents', PK_Reports_Documents)ได้รับผลลัพธ์ต่อไปนี้สำหรับรหัสรายงาน 18698: สำหรับการค้นหานี้: SELECT * FROM Reports_Documents WHERE ReportID = 18698 option (recompile) ฉันได้รับแผนคิวรีที่ทำให้ดัชนีเป็นกลุ่มค้นหาPK_Reports_Documentsตามที่คาดไว้ แต่สิ่งที่ทำให้ฉันยุ่งเหยิงคือค่าที่ไม่ถูกต้องสำหรับจำนวนแถวโดยประมาณ: ตามนี้ : เมื่อแบบสอบถามตัวอย่างค่า WHERE อนุประโยคเท่ากับค่าฮิสโตแกรม RANGE_HI_KEY ค่า SQL Server จะใช้คอลัมน์ EQ_ROWS ในฮิสโตแกรมเพื่อกำหนดจำนวนแถวที่เท่ากับ นี่เป็นวิธีที่ฉันคาดหวังไว้ว่าจะเป็นอย่างไรก็ตามในชีวิตจริงดูเหมือนจะไม่เป็นเช่นนั้น ฉันยังลองRANGE_HI_KEYค่าอื่น ๆที่มีอยู่ในฮิสโตแกรมที่จัดทำโดยshow_statisticsและประสบการณ์เดียวกัน ปัญหานี้ในกรณีของฉันดูเหมือนว่าจะทำให้แบบสอบถามบางอย่างใช้แผนการดำเนินการที่ไม่เหมาะสมมากทำให้เวลาดำเนินการไม่กี่นาทีในขณะที่ฉันสามารถเรียกใช้ใน 1 วินาทีพร้อมคำใบ้แบบสอบถาม สรุป: มีคนอธิบายได้ไหมว่าทำไมEQ_ROWSไม่ใช้ฮิสโตแกรมมาคำนวณหาจำนวนแถวและการประมาณการที่ไม่ถูกต้องมาจากไหน ข้อมูลอีกเล็กน้อย (อาจมีประโยชน์): เปิดใช้งานการสร้างสถิติอัตโนมัติและสถิติทั้งหมดเป็นข้อมูลล่าสุด ตารางที่สอบถามมีประมาณ 80 ล้านแถว PK_Reports_Documentsเป็นการรวมกันของ PK ประกอบด้วยReportID INTและDocumentID CHAR(8) ดูเหมือนว่าแบบสอบถามจะโหลดวัตถุสถิติที่แตกต่างกันทั้งหมด …


3
ตัวแปรสถานะ MySQL Handler_read_rnd_next กำลังเติบโตขึ้นอย่างมาก
ในสถานะ MYSQL ค่า Handler_read_rnd_next นั้นสูงมาก ฉันทราบว่าค่านี้จะเพิ่มขึ้นเมื่อดำเนินการแบบสอบถามซึ่งไม่มีดัชนีที่เหมาะสม แต่แม้ว่าเราจะเรียกใช้สถานะการแสดงเช่น 'Handler_read_rnd_next' ค่านี้จะเพิ่มขึ้น 2 จากการตั้งค่าสถานะนี้เรากำลังตรวจสอบสถานะบางอย่าง ดังนั้นทุกครั้งสถิตินี้จึงมีความสำคัญ เราสามารถแยกการดำเนินการ 'show' เหล่านี้ออกจากการนับ 'Handler_read_rnd_next' อีกหนึ่งตัวอย่างสำหรับสิ่งนี้ มีตารางที่มี 10 แถวตารางจะถูกจัดทำดัชนีในคอลัมน์ 'data' และหากเราประมวลผลแบบสอบถามต่อไปนี้: select data from test where data = 'vwx' -> returns one row และถ้าเราตรวจสอบค่าของ 'Handler_read_rnd_next' มันจะเพิ่มขึ้น 7 ต่อไปนี้เป็นผลลัพธ์ของคำสั่งอธิบายสำหรับแบบสอบถามด้านบน: explain select data from test where data = 'vwx'; id, select_type, …

1
วิธีรีเซ็ตสถิติหลังจากอัพเดตสถิติ ... ด้วย ROWCOUNT
สำหรับการปรับแต่งและวัตถุประสงค์ในการทดสอบแบบสอบถามคุณสามารถกำหนด rowcount และ PAGECOUNT UPDATE STATISTICSสถิติดัชนีของตารางโดยการเรียกใช้ แต่คุณจะคำนวณ / รีเซ็ตสถิติเป็นเนื้อหาจริงของตารางได้อย่างไร --- Create a table.. CREATE TABLE dbo.StatTest ( i int NOT NULL, CONSTRAINT PK_StatTest PRIMARY KEY CLUSTERED (i) ); GO --- .. and give it a thousand-or-so rows: DECLARE @i int=1; INSERT INTO dbo.StatTest (i) VALUES (@i); WHILE (@i<1000) BEGIN; INSERT …

3
เหตุใดจึงตั้งค่าสถิติการอัปเดตอัตโนมัติเป็นเท็จ
ฉันเพิ่งได้รับ SQL Server ประมาณ 20 อินสแตนซ์ซึ่งเป็นส่วนหนึ่งของโครงการการได้มาที่กว้างขึ้น ฉันอยู่ระหว่างการประเมินประสิทธิภาพและฉันไม่ชอบวิธีการบำรุงรักษาตามแผนการที่วางไว้ ฉันเห็นดัชนีแบบครอบคลุมรายวันสร้างใหม่ (ฉันสามารถจัดการกับสิ่งนี้ได้) และการอัปเดตสถิติรายวันด้วยตนเอง ประมาณครึ่งหนึ่งของฐานข้อมูลได้รับการตั้งค่าเป็นสถิติการอัพเดทอัตโนมัติ = เท็จด้วยเหตุผลที่ไม่ชัดเจนนอกเหนือจากที่ฉันบอกก็คือการลด 'ปัญหาประสิทธิภาพ' ... ฉันมักจะคิดและทำงานเพื่อตั้งค่านี้เป็น True และรู้สึกว่าการปรับปรุงด้วยตนเองไม่จำเป็นถ้าการตั้งค่านี้เป็นจริง ฉันผิดหรือเปล่า? ทุกคนสามารถอธิบายได้ว่าประโยชน์ที่จะได้รับในการตั้งค่านี้เป็นเท็จ แต่ทำการอัพเดทด้วยตนเองทุกวันแทนหรือไม่ ฉันควรพูดถึงว่าฐานข้อมูลบางส่วนนั้นมีการทำธุรกรรมสูง (มีการแทรกการลบการอัปเดตต่อวันเป็นจำนวนมาก) อื่น ๆ มีอัตราการทำธุรกรรมต่ำและบางรายการเป็นแบบอ่านอย่างเดียว ไม่มีการสัมผัสหรือเหตุผลว่าการตั้งค่าการอัปเดตอัตโนมัติเป็นเท็จ ดูเหมือนจะเป็นลอตเตอรี

1
ประสิทธิภาพการสืบค้นต่ำ
เรามีกระบวนการขนาดใหญ่ (10,000+ บรรทัด) ซึ่งโดยทั่วไปแล้วจะทำงานใน 0.5-6.0 วินาทีขึ้นอยู่กับปริมาณข้อมูลที่ต้องใช้งาน ในช่วงเดือนที่ผ่านมาหรือประมาณ 30 กว่าวินาทีหลังจากเราอัปเดตสถิติด้วย FULLSCAN เมื่อมันช้าลง sp_recompile "แก้ไข" ปัญหาจนกว่างานสถิติรายค่ำคืนจะทำงานอีกครั้ง ด้วยการเปรียบเทียบแผนการดำเนินการที่ช้าและเร็วฉันได้ จำกัด ให้แคบลงเป็นตาราง / ดัชนีเฉพาะ เมื่อมันทำงานช้ามันกำลังประมาณ ~ 300 แถวจะถูกส่งคืนจากดัชนีเฉพาะเมื่อมันทำงานเร็วมันจะประมาณ 1 แถว เมื่อรันช้ามันจะใช้ Table Spool หลังจากทำการค้นหาบนดัชนีเมื่อมันรันเร็วมันจะไม่ทำ Spool Table ใช้ DBSS SHOW_STATISTICS ฉันทำกราฟฮิสโตแกรมดัชนีใน excel ปกติแล้วฉันจะคาดหวังว่ากราฟจะเป็น "ภูเขากลิ้ง" มากกว่า แต่ดูเหมือนว่าภูเขาซึ่งเป็นจุดที่สูงที่สุดคือ 2x-3x สูงกว่าค่าอื่น ๆ ส่วนใหญ่บนกราฟ หากฉันอัปเดตสถิติโดยไม่มี FULLSCAN มันจะดูเป็นปกติมากกว่า ถ้าฉันเรียกใช้ด้วย FULLSCAN อีกครั้งดูเหมือนว่าฉันอธิบายไว้ข้างต้น …

1
ผลกระทบของการรัน sp_updatestats ในเซิร์ฟเวอร์การผลิตคืออะไร
การเรียกใช้sp_updatestatsSQL Server ในสภาพแวดล้อมการผลิตปลอดภัยหรือไม่? หรือมากกว่านั้นอะไรคือผลกระทบของการอัพเดตสถิติทั้งหมดบนเซิร์ฟเวอร์ sql สามารถ "ทำให้หายใจไม่ออก" เซิร์ฟเวอร์ sql ในขณะที่ทำงานและทำให้หมดเวลาหรือปัญหาอื่น ๆ สำหรับผู้ใช้หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.