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

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

1
เหตุใด SQL Server จึงไม่ทำสถิติฮิสโตแกรมคอลัมน์ผสม
SQL Server มีสิ่งที่เรียกว่า "สถิติหลายคอลัมน์" แต่ไม่ใช่สิ่งที่คิดว่าจะหมายถึง ลองดูตารางตัวอย่างต่อไปนี้: CREATE TABLE BadStatistics ( IsArchived BIT NOT NULL, Id INT NOT NULL IDENTITY PRIMARY KEY, Mystery VARCHAR(200) NOT NULL ); CREATE NONCLUSTERED INDEX BadIndex ON BadStatistics (IsArchived, Mystery); ด้วยเหตุนี้จึงมีการสร้างสถิติสองรายการในดัชนีสองรายการที่เรามี: สถิติสำหรับ BadIndex: +--------------+----------------+-------------------------+ | All density | Average Length | Columns | +--------------+----------------+-------------------------+ | 0.5 …

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

2
การปรับปรุงตัวอย่าง SQL Server ของสถิติพลาด RANGE_HI_KEY สูงสุดในคอลัมน์คีย์จากน้อยไปมาก
ฉันกำลังพยายามที่จะเข้าใจว่าการสุ่มตัวอย่างสถิติทำงานอย่างไรและพฤติกรรมด้านล่างนี้เป็นสิ่งที่คาดหวังในการอัปเดตสถิติตัวอย่างหรือไม่ เรามีตารางขนาดใหญ่แบ่งพาร์ติชันตามวันที่โดยมีแถวสองพันล้านแถว วันที่พาร์ทิชันเป็นวันที่ธุรกิจก่อนหน้านี้และเป็นคีย์จากน้อยไปมาก เราโหลดข้อมูลลงในตารางนี้ในวันก่อนหน้าเท่านั้น การโหลดข้อมูลทำงานข้ามคืนดังนั้นในวันศุกร์ที่ 8 เมษายนเราโหลดข้อมูลสำหรับวันที่ 7 FULLSCANหลังจากทำงานในแต่ละเราปรับปรุงสถิติแม้จะใช้กลุ่มตัวอย่างมากกว่า บางทีฉันอาจไร้เดียงสา แต่ฉันคาดหวังว่า SQL Server จะระบุคีย์สูงสุดและคีย์ต่ำสุดในช่วงเพื่อให้แน่ใจว่ามีตัวอย่างช่วงที่ถูกต้อง ตามบทความนี้ : สำหรับที่เก็บข้อมูลแรกขอบเขตที่ต่ำกว่าคือค่าที่เล็กที่สุดของคอลัมน์ที่สร้างฮิสโตแกรม อย่างไรก็ตามมันไม่ได้พูดถึง bucket / ค่าที่มากที่สุด ด้วยการอัพเดตสถิติตัวอย่างในตอนเช้าของวันที่ 8 ตัวอย่างจะพลาดค่าสูงสุดในตาราง (อันดับที่ 7) เนื่องจากเราทำการสืบค้นข้อมูลจากวันก่อนจำนวนมากทำให้มีการประมาณค่า cardinality ที่ไม่ถูกต้องและมีจำนวนการสอบถามที่หมดเวลา SQL Server ไม่ควรระบุค่าสูงสุดสำหรับคีย์นั้นและใช้เป็นค่าสูงสุดRANGE_HI_KEYหรือไม่ หรือเป็นเพียงแค่นี้ข้อ จำกัด ของการปรับปรุงโดยไม่ต้องใช้FULLSCAN? รุ่น SQL Server 2012 SP2-CU7 ขณะนี้เราไม่สามารถอัปเกรดได้เนื่องจากมีการเปลี่ยนแปลงOPENQUERYพฤติกรรมใน SP3 ที่มีการปัดเศษตัวเลขในแบบสอบถามเซิร์ฟเวอร์ที่เชื่อมโยงระหว่าง SQL Server และ Oracle

3
สถิติของ SQL Server ถูกเก็บไว้ในฐานข้อมูลหรือบัฟเฟอร์พูลหรือไม่?
แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่

1
การสุ่มตัวอย่างทำงานอย่างไรเมื่ออัปเดตสถิติ
ฉันมีโต๊ะขนาดใหญ่หลายแห่ง ฉันต้องการตรวจสอบให้แน่ใจว่าสถิติของพวกเขาเป็นข้อมูลล่าสุดผ่านแผนการบำรุงรักษารายสัปดาห์ อย่างไรก็ตามการทำเช่นนั้นใช้เวลามากเกินไป ถ้าฉันระบุ WITH SAMPLE 50 PERCENT ทำ SQL Server แล้วตัวอย่าง: 50% แรกของหน้า หน้าอื่น ๆ หรือกลยุทธ์อื่น ๆ BOLไม่ชัดเจนในเรื่องนี้

2
DTA แนะนำให้สร้างสถิติ
ฉันเพิ่งรัน T-SQL เคียวรีผ่าน DTA และหนึ่งในคำแนะนำคือการสร้างสถิติบนหนึ่งในคอลัมน์ที่เป็นส่วนหนึ่งของแบบสอบถามจำนวนมากในไฟล์รหัส SQL คำถามของฉันคือสถิติช่วยในเรื่องประสิทธิภาพได้อย่างไร

1
สถิติหายไป / ว่างแบบสุ่มตลอดทั้งวัน
ฉันมีฐานข้อมูล SQL Server 2017 (CU9) ที่แสดงปัญหาที่เกี่ยวข้องกับประสิทธิภาพที่ฉันเชื่อว่าเกี่ยวข้องกับสถิติดัชนี ในขณะที่การแก้ไขปัญหาฉันพบว่าสถิติไม่ได้รับการปรับปรุง (หมายถึง DBCC SHOW_STATISTICS จะส่งกลับค่า NULL ทั้งหมด) ฉันดำเนินการอัปเดตสถิติบนตารางได้รับผลกระทบและตรวจสอบว่า SHOW_STATISTICS คืนค่าจริงเมื่อเวลา 16:00 น. เมื่อวานนี้ เช้านี้เวลา 8:00 น. สถิติว่างเปล่าอีกครั้ง (คืนค่า NULL) ไคลเอ็นต์มีงานบำรุงรักษาที่กำหนดเวลาให้รันทุกวันเวลา 4:00 น. ซึ่งทำดัชนีฐานข้อมูลอีกครั้งตามด้วยการดำเนินการของ sp_updatestats กับฐานข้อมูลทั้งหมด ฉันตรวจสอบแล้วว่าสถิติได้รับการอัปเดตเมื่อเวลา 4:00 AM ด้วยการติดตามของผู้สร้างโปรไฟล์ ฉันตกอยู่ในความสูญเสียว่าทำไมสถิติจะว่างเปล่ามันเป็นงานบำรุงรักษาที่ 4:00 AM หรือไม่? มีข้อบกพร่องที่ฉันไม่ทราบเกี่ยวกับ SQL Server รุ่นนี้หรือไม่ ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของคุณ ข้อมูลเพิ่มเติม: เปิดใช้งานสถิติการอัพเดทอัตโนมัติ สถิติการอัพเดทอัตโนมัติแบบอะซิงโครนัสถูกปิดใช้งาน ปิดใช้งานการสร้างสถิติเพิ่มเติมแบบอัตโนมัติ การทำดัชนีสคริปต์ซ้ำ (Obfuscated): …

1
ผลกระทบของการรัน sp_updatestats ในเซิร์ฟเวอร์การผลิตคืออะไร
การเรียกใช้sp_updatestatsSQL Server ในสภาพแวดล้อมการผลิตปลอดภัยหรือไม่? หรือมากกว่านั้นอะไรคือผลกระทบของการอัพเดตสถิติทั้งหมดบนเซิร์ฟเวอร์ sql สามารถ "ทำให้หายใจไม่ออก" เซิร์ฟเวอร์ sql ในขณะที่ทำงานและทำให้หมดเวลาหรือปัญหาอื่น ๆ สำหรับผู้ใช้หรือไม่

1
ความไม่เหมาะสมของการใช้ STATISTICS_NORECOMPUTE
เมื่อไม่นานมานี้ฉันได้มีส่วนร่วมในการบำรุงรักษาชุดฐานข้อมูลที่มีปัญหาดัชนีที่น่าสนใจ หนึ่งในสิ่งที่ทำให้ฉันแย่ที่สุดคือความแตกต่างของดัชนีระหว่างการพัฒนาการทดสอบแบบจำลองและเครื่องจักรการผลิต เนื่องจากความแตกต่างทำให้การปรับแต่งแบบสอบถามค่อนข้างยากที่จะทำการซิงค์เป็นหนึ่งในโครงการแรกของฉัน ในขณะที่ฉันได้เปรียบเทียบสภาพแวดล้อมการทดสอบและแบบจำลองฉันได้สังเกตเห็นว่าดัชนีส่วนใหญ่ในสภาพแวดล้อมแบบจำลองได้STATISTICS_NORECOMPUTEตั้งค่าไว้ONในขณะที่ไม่ได้ทำการทดสอบ ในสภาพแวดล้อมทั้งหมดมีงานยามค่ำคืนที่อัพเดตสถิติของฐานข้อมูลทั้งหมด ฉันไม่เคยจัดการSTATISTICS_NORECOMPUTEมาก่อนดังนั้นนี่คือคำถามของฉัน มีแนวทางปฏิบัติที่ดีที่สุดเมื่อจัดการกับการตั้งค่านี้หรือไม่? หากฉันกำลังอัปเดตสถิติในตอนท้ายของวันดีที่สุดที่จะเปิดSTATISTICS_NORECOMPUTEในทุกสภาพแวดล้อมของดัชนีทั้งหมดหรือไม่ หรือมีเหตุผลที่ดีที่จะไม่? แก้ไข: ฉันได้พบหนึ่งในบล็อกของ Kimberly Tripp ในหัวข้อที่นี่ซึ่งดูเหมือนว่าจะแนะนำว่าSTATISTICS_NORECOMPUTEควรใช้อย่างประหยัดที่สุด แต่ฉันยังคงกังวลเกี่ยวกับการปิดการใช้งานทั่วโลก มีใครลองบ้างและพวกเขามีประสบการณ์อย่างไรบ้าง

1
วิธีการทั่วไปที่รวดเร็วในการคำนวณเปอร์เซ็นต์
ฉันต้องการค้นหา n> 1 เปอร์เซนต์ของคอลัมน์ที่ไม่เรียงลำดับใน PostgreSQL ตัวอย่างเช่นเปอร์เซ็นไทล์ที่ 20, 40, 60, 80 และ 100 วิธีแก้ปัญหาที่ชัดเจนคือการนับและจัดเรียงคอลัมน์แล้วดู แต่ฉันหวังว่าจะได้คำตอบที่ดีกว่า ความคิดใด ๆ PS ฉันพบวิธีแก้ปัญหาที่ดีสำหรับ MySQL แต่ไม่สามารถแปลเป็น psql ได้

1
ค่ามัธยฐาน, โหมด, เปอร์เซ็นไทล์และ OLAP
ฉันเป็นมือใหม่ที่พยายามโอบรอบ OLAP และฉันมีคำถามสองสามข้อ คำถามที่ 1: OLAP cube เก็บค่ามัธยฐาน, โหมด, เปอร์เซ็นไทล์ได้หรือไม่? คำถามที่ 2:แบบสอบถาม MDX ที่ผู้ใช้เขียนสามารถส่งคืนข้อมูลสรุปของข้อมูลระดับแถวได้หรือไม่ (เช่น: การทำธุรกรรม%> $ 100) หรือผู้ออกแบบคิวบ์ต้องเพิ่มสิ่งนี้ในคิวบ์หรือไม่ คำถามที่ 3:ผลิตภัณฑ์ OLAP ใด ๆ มีกลไกสำหรับการเข้าถึงข้อมูลระดับแถวหรือไม่ ที่? แผนกไอทีของเรากำลังค้นหาคำติชมเกี่ยวกับปัญหาที่เรามีกับคิวบ์ ROLAP MS Analsis Services เราไม่สามารถเข้าถึงฐานข้อมูลเชิงสัมพันธ์ที่อยู่ด้านหลังและจำเป็นต้องทำการคำนวณที่ไม่สามารถใช้งานได้ในปัจจุบันเป็นมาตรการในคิวบ์ ให้ฉันดูว่าฉันมีสิทธิ์นี้ไหม คิวบ์สามารถจัดเตรียมสถิติสำหรับการนับหมายถึงสัดส่วนการเบี่ยงเบนมาตรฐาน หากสถิติเฉพาะไม่ได้รับการตอบสนองในการวัดที่ได้รับจากนักออกแบบคิวบ์เราสามารถเขียนแบบสอบถาม MDX เพื่อรับมันได้หรือไม่ หรือพวกเขาจำเป็นต้องเปลี่ยนคิวบ์เพื่อคำนวณล่วงหน้าจากข้อมูลระดับแถว คิวบ์ไม่สามารถให้ข้อมูลสถิติเช่นค่ามัธยฐานโหมดหรือค่าร้อยละได้เนื่องจากสถิติเหล่านี้ไม่ได้ทำให้รุนแรงขึ้นอย่างเหมาะสม ฉันกำลังอ่านไวยากรณ์ของกราฟิกของ Leland Wilkinson และในบทของเขาเกี่ยวกับ Data Mining และ OLAP เขากล่าว [การดำเนินการคิวบ์] เหล่านี้ทำงานได้ดีกับสถิติเช่นการนับค่าเฉลี่ยสัดส่วนและส่วนเบี่ยงเบนมาตรฐาน …
9 ssas  statistics  olap 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.