คำถามติดแท็ก database-tuning

การปรับแต่งประสิทธิภาพทำได้โดยการปรับพารามิเตอร์ฐานข้อมูลหรือโครงร่างทางกายภาพของฐานข้อมูล

2
ฉันจะหาแบบฝึกหัดการปรับฐานข้อมูลสำหรับการเรียนรู้ได้ที่ไหน
ในฐานะนักพัฒนาซอฟต์แวร์ DBA มักจะรับผิดชอบในการแก้ไขปัญหาประสิทธิภาพในระดับฐานข้อมูลดังนั้นเราจึงไม่ได้รับประสบการณ์มากนักในการวินิจฉัยปรับจูนสอบถามซ้ำอีกครั้ง ฉันกำลังมองหาฐานข้อมูลที่มีตารางข้อมูลคิวรีทริกเกอร์ SPs และอื่น ๆ ซึ่งมีปัญหาด้านประสิทธิภาพโดยเจตนาและหวังว่าจะมีชุดของแบบฝึกหัดที่คุณพยายามระบุและแก้ไขปัญหา เป็นการดีที่จะอยู่บนเซิร์ฟเวอร์ MS SQL ใครรู้เรื่องนี้บ้าง

4
ฉันจะบอกได้อย่างไรว่าทำไมการแทรกในตารางที่กำหนดจึงช้า
ฉันรู้ว่า INSERT ในตาราง SQL อาจช้าด้วยเหตุผลหลายประการ: การมีอยู่ของ INSERT TRIGGERs บนโต๊ะ ข้อ จำกัด ที่บังคับใช้จำนวนมากที่ต้องตรวจสอบ (โดยปกติคือกุญแจต่างประเทศ) หน้าแยกในดัชนีคลัสเตอร์เมื่อแถวถูกแทรกในกลางตาราง การอัพเดตดัชนีที่ไม่ใช่คลัสเตอร์ทั้งหมดที่เกี่ยวข้อง การบล็อกจากกิจกรรมอื่น ๆ บนโต๊ะ เวลาตอบสนองการเขียน IO แย่ ... ทุกอย่างที่ฉันพลาดไป? ฉันจะรู้ได้อย่างไรว่าตัวไหนมีความรับผิดชอบในกรณีเฉพาะของฉัน? ฉันจะวัดผลกระทบของการแยกหน้าเทียบกับการปรับปรุงดัชนีที่ไม่ทำคลัสเตอร์กับทุกอย่างได้อย่างไร ฉันมี proc ที่เก็บไว้ซึ่งแทรกประมาณ 10,000 แถวต่อครั้ง (จากตารางชั่วคราว) ซึ่งใช้เวลาประมาณ 90 วินาทีต่อแถว 10k นั่นเป็นสิ่งที่ยอมรับไม่ได้ช้าเพราะจะทำให้เกิดการหมดเวลาอื่น ๆ ฉันได้ดูแผนการดำเนินการและฉันเห็นงาน INSERT CLUSTERED INDEX และ INDEX SEEKS ทั้งหมดจากการค้นหา FK แต่ก็ยังไม่ได้บอกฉันว่าทำไมมันถึงใช้เวลานาน ไม่มีทริกเกอร์ แต่ตารางมี FKeys …

2
MySQL สร้างตารางชั่วคราวบนดิสก์ ฉันจะหยุดมันได้อย่างไร
เรากำลังเรียกใช้ไซต์ (Moodle) ที่ผู้ใช้พบว่าช้า ฉันคิดว่าฉันได้ติดตามปัญหาของ MySQL ที่สร้างตารางชั่วคราวบนดิสก์ ฉันดูตัวแปรcreated_tmp_disk_tablesในการดูแลเซิร์ฟเวอร์ Mysql Workbench และจำนวนเพิ่มขึ้นด้วยประมาณ 50 tables / s หลังจากใช้ไป 1 วันcreated_tmp_disk_tablesคือ> 100k นอกจากนี้ดูเหมือนว่าหน่วยความจำจะไม่ออก การใช้งานเพิ่มขึ้นเรื่อย ๆ จนกระทั่งระบบใช้งานไม่ได้และเราต้องเริ่ม MySQL ใหม่ ฉันต้องเริ่มต้นใหม่เกือบทุกวันและเริ่มต้นด้วยการใช้หน่วยความจำที่มีอยู่ประมาณ 30-35% และจบวันด้วย 80% ฉันไม่มี blobs ในฐานข้อมูลและไม่สามารถควบคุมการค้นหาได้ดังนั้นฉันจึงไม่สามารถพยายามปรับให้เหมาะสม ฉันได้ใช้Percona Confirguration Wizardเพื่อสร้างไฟล์การกำหนดค่า แต่ my.ini ไม่ได้แก้ปัญหาเช่นกัน คำถาม ฉันควรเปลี่ยนอะไรเพื่อหยุด MySQL ไม่ให้สร้างตารางชั่วคราวบนดิสก์ จำเป็นต้องเปลี่ยนการตั้งค่าหรือไม่? ฉันควรจะโยนความทรงจำมากกว่านี้หรือไม่ ฉันจะหยุด MySQL ไม่ให้กินหน่วยความจำได้อย่างไร แก้ไข ฉันเปิดใช้งานการslow_queriesบันทึกและค้นพบว่าการสืบค้นSELECT GET_LOCK()ถูกบันทึกไว้ช้า การค้นหาอย่างรวดเร็วเปิดเผยว่าฉันอนุญาตการเชื่อมต่อแบบถาวรในการกำหนดค่า …

2
การออกแบบโมดูลการควบคุมอัตโนมัติของผู้ใช้ (บทบาทและสิทธิ์)
ฉันพยายามสร้างโมเดลโมดูลการพิสูจน์ตัวตนผู้ใช้สำหรับฐานข้อมูล MS SQL Server ที่จะเป็นแบ็คเอนด์ไปยังแอปพลิเคชัน Delphi UI โดยทั่วไปฉันต้องการมีบัญชีผู้ใช้ที่ผู้ใช้อยู่ในกลุ่มเดียวเท่านั้น กลุ่มสามารถมีจำนวนสิทธิ์ "n" ฉันต้องการเพิ่มประวัติรหัสผ่านในฐานข้อมูลเนื่องจากผู้ใช้จะต้องเปลี่ยนรหัสผ่านตามการตั้งค่าแอปพลิเคชัน (ตัวอย่างเช่นทุก ๆ 90 วัน) ฉันต้องการบันทึกกิจกรรมในแต่ละครั้งที่ผู้ใช้ลงชื่อเข้าและออก ฉันอาจขยายสิ่งนี้ไปยังกิจกรรมเพิ่มเติมในอนาคต ด้านล่างคุณจะพบรอยแตกครั้งแรกของฉันที่มัน โปรดแจ้งให้ฉันทราบข้อเสนอแนะเพื่อปรับปรุงตามนี้เป็นครั้งแรกของฉันทำเช่นนี้ คุณเห็นความต้องการคุณลักษณะเพิ่มเติมสำหรับการรักษาความปลอดภัยตามบทบาทและข้อ จำกัด สำหรับกฎรหัสผ่าน / รอบระยะเวลาหมดอายุหรือไม่?

3
MySQL table_cache และ Opened_tables
ฉันเคยเห็นคนใช้การเปรียบเทียบของ Open_tables และ Opened_tables เพื่อประเมินว่า table_cache มีขนาดเล็กเกินไปใน MySQL อย่างไรก็ตามฉันเชื่อว่า Opened_tables สะสมตลอดเวลาดังนั้นนี่จึงไม่ใช่การเปรียบเทียบที่ถูกต้อง ข้อแม้เพียงข้อเดียวที่บางที Opened_tables อาจชนกับการพลาดเท่านั้น - ถึงแม้ว่าถ้าตารางที่เปิดต่อวินาทียังคงมีขนาดเล็กก็อาจไม่เป็นปัญหาสำหรับมันที่จะค่อยๆเติบโต หากเปรียบเทียบ Open_tables กับ Opened_tables ไม่ถูกต้องมีวิธีอื่นในการรับข้อมูลที่วัดได้จากสิ่งนี้หรือไม่? นี่คือ MySQL 5.0 แต่ยินดีต้อนรับความแตกต่างระหว่างเวอร์ชันด้วย

2
SELECT TOP 1 เป็นอันตรายต่อประสิทธิภาพการค้นหา มีวิธีเข้าถึง dba เพื่อเอาชนะสิ่งนี้หรือไม่
ในแอปพลิเคชันที่ใช้งานจริง (C # กำลังพูดคุยกับ SQL Server 2014 Standard) มีข้อความค้นหาที่มีลักษณะดังนี้ด้านล่าง เวลาส่วนใหญ่จะทำงานในหน่วยมิลลิวินาที แต่บางครั้ง (สำหรับค่าบางอย่าง@Id) มันจะไปถั่วและใช้เวลาประมาณหนึ่งนาที นี่เป็นเวลานานกว่าการหมดเวลาของแอปดังนั้นแอปจึงล้มเหลวสำหรับผู้ใช้ ในกรณี "go nuts" ชุดผลลัพธ์ที่ส่งคืนจะว่างเปล่าอย่างถูกต้องเนื่องจากอยู่ในหลาย ๆ กรณี แต่ไม่ใช่ทุกกรณี โชคดีที่สิ่งนี้สามารถทำซ้ำได้ทั้งในสภาพแวดล้อมการผลิตและการพัฒนา นักพัฒนาซอฟต์แวร์แจ้งว่าการลบ "TOP 1" ออกจากคำค้นหาจากนั้นตรวจสอบให้แน่ใจว่าแอปนั้นใช้แถวเพิ่มเติมของชุดผลลัพธ์เพื่อล้างปัญหาด้านประสิทธิภาพ ตัววางแผนคิวรีไม่แนะนำดัชนีเมื่อTOP 1มีอยู่ (ใน dev) กำลังเปลี่ยนคิวรีและแก้ไขแอปอยู่ในระหว่างดำเนินการ การเปิดตัวใช้เวลาสักครู่ คำถามของฉัน:มีวิธีใดบ้างที่สามารถเข้าถึง DBA ในการปรับแต่งหรือปรับแต่งอินสแตนซ์ SQL Server ที่ใช้งานได้เพื่อแก้ไขปัญหานี้ก่อนที่แอพจะเปลี่ยนด้วยการสืบค้นใหม่ SELECT TOP 1 subscription_id FROM subscription AS sub JOIN billing_info AS bi …

2
SQL Server: มีใครใช้ตัวเลือกการปรับแต่งการจัดสรรหน้าขนาดใหญ่?
TF834 large page allocationsมีใครใช้ตัวเลือกการปรับแต่งการใช้ ฉันเพิ่งอ่านบทความ MS เกี่ยวกับเรื่องนี้และสงสัยว่าถ้าใครเคยใช้มันและเห็นประสิทธิภาพเพิ่มขึ้น มีสิ่งใดที่ต้องระวังเคล็ดลับข้อผิดพลาดหรือไม่? เซิร์ฟเวอร์เป็น Windows 2008 64 บิต, 128 GB RAM, 4 CPU 8 core hyperthreded (รวม 64 คอร์) เซิร์ฟเวอร์ SQL2005 ฉันต้องการปรับแต่งเซิร์ฟเวอร์เพื่อใช้สเปคของมันให้ดีกว่าการใช้การติดตั้ง SQL ที่เป็นค่าเริ่มต้นที่ทำกับมันในปัจจุบัน คำแนะนำพิเศษใด ๆ จะได้รับการต้อนรับ

3
การดำเนินการตามคำขอเดียวกันจาก C # VS SSMS ให้เวลาดำเนินการที่แตกต่างกัน
ฉันมีคำขอเช่นนี้ SELECT [EstimateId], [CreationUserId], [EstimateStatusValueId], [LanguageId], [LocationId], [EstimatorUserId], [FilterUnitSystemTypeId], [EstimateNumber], [RevisionNumber], [CreationDate], [ModificationDate], [ProjectDescription], [IsBsdq], [ClosingDate], [ClosingTime], [ClosingUpdatedOn], [DeadLineDate], [IsReceived], [Inclusion], [Exclusion], [Misc], [Note], [WorkDeadLines], [Comments], [Validity], [PlansLocation], [PlansReceivedFrom], [Price] FROM [Estimate].[Estimates] ORDER BY [ClosingDate] ASC, [ClosingTime] ASC เมื่อฉันเรียกใช้แบบสอบถามนี้ใน SSMS ฉันได้รับเวลาดำเนินการ 953ms แต่เมื่อฉันเรียกใช้แบบสอบถามนี้จากแบบสอบถาม Linq ใน C # ของฉันฉันได้รับเวลาดำเนินการ 1813ms The …

1
ปรับ PostgreSQL ให้เหมาะสมที่สุดสำหรับการปรับปรุง INSERTS และ bytea มากมาย
สิ่งที่เรามี (ซอฟต์แวร์): PostrgeSQL 9.3พร้อมการกำหนดค่าพื้นฐาน (ไม่มีการเปลี่ยนแปลงpostgresql.conf) Windows 7 64 บิต ฮาร์ดแวร์: Intel Core i7-3770 3.9 Ghz RAM 32 Gb WDC WD10EZRX-00L4HBAta ไดรฟ์ (1000Gb, SATA III) ดังนั้นเราต้องโหลดลงใน DB aprox 100.000.000แถวที่มีbyteaคอลัมน์และง่ายขึ้น500.000.000แถว (โดยไม่ LOBs) มี 2 varcharดัชนีในตารางที่ 1 (ความยาว 13, 19) และ 2 varcharดัชนีในตารางที่ 2 (18, 10 ความยาว) นอกจากนี้ยังมีลำดับสำหรับการสร้าง id สำหรับแต่ละตาราง ในตอนนี้การดำเนินการเหล่านี้กำลังทำอยู่กับการเชื่อมต่อ 8 แบบขนานกับขนาดแบตช์ …

1
ไม่สามารถสแกนด้วย NOLOCK ต่อเนื่องจากการเคลื่อนไหวของข้อมูล
เราเรียกใช้ SQL Server 2000 และเราได้รับข้อผิดพลาดเล็กน้อยทุกคืน Could not continue scan with NOLOCK due to data movement แบบสอบถามที่ส่งข้อผิดพลาดนี้เป็นแบบสอบถามที่ซับซ้อนขนาดใหญ่ที่รวมอยู่เหนือตารางโหล ข้อมูลพื้นฐานของเราสามารถอัปเดตบ่อยครั้ง 'การปฏิบัติที่ดีที่สุด' ทางวัฒนธรรมคือในอดีตการแนะนำของNOLOCKคำแนะนำที่เพิ่มประสิทธิภาพและการปรับปรุงพร้อมกัน แบบสอบถามนี้ไม่จำเป็นต้องมีความแม่นยำ 100% เช่นเราจะทนต่อการอ่านที่สกปรก ฯลฯ อย่างไรก็ตามเราพยายามที่จะเข้าใจว่าเหตุใดฐานข้อมูลจึงโยนข้อผิดพลาดนี้ถึงแม้ว่าเราจะมีคำแนะนำการล็อคเหล่านี้ทั้งหมด ทุกคนสามารถให้ความกระจ่างเกี่ยวกับเรื่องนี้ - อ่อนโยนฉันเป็นโปรแกรมเมอร์ไม่ใช่ DBA :) PS: เราได้ใช้การแก้ไขที่กล่าวถึงด้านล่างก่อนหน้านี้: http://support.microsoft.com/kb/815008
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.