ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน


1
โดยประมาณกับแผนแบบสอบถามจริงกับการเรียกใช้ฟังก์ชัน
ฉันมีแบบสอบถามนี้ในเซิร์ฟเวอร์ SQL แบบสอบถามจำลองแบบผสาน: SELECT DISTINCT b.tablenick, b.rowguid, c.generation, sys.fn_MSgeneration_downloadonly ( c.generation, c.tablenick ) FROM #belong b LEFT OUTER JOIN dbo.MSmerge_contents c ON c.tablenick = b.tablenick AND c.rowguid = b.rowguid; แผนแบบสอบถามโดยประมาณมีข้อมูลเกี่ยวกับ 3 แบบสอบถาม แบบสอบถามข้างต้น การเรียกใช้ฟังก์ชันเพื่อ fn_MSgeneration_download เท่านั้น การเรียกใช้ฟังก์ชันเพื่อ fn_MSArticle_has_downloadonly_property แผนแบบสอบถามจริงรวมเฉพาะข้อมูลนี้: แบบสอบถามข้างต้น ไม่มีอะไรเกี่ยวกับฟังก์ชั่น เหตุใดข้อมูลฟังก์ชันจึงขาดหายไปในแผนจริง ฉันลองตัวเลือกเหล่านี้: SET STATISTICS PROFILE ON SET STATISTICS XML …

2
วิธีการปรับสมดุลหน่วยความจำ SQL Server กับหน่วยความจำบริการวิเคราะห์เซิร์ฟเวอร์ SQL
เรามีหลายระบบที่มีการกำหนดค่าเดียวกัน เซิร์ฟเวอร์เดียว (เสมือนหรือจริง) ใช้ SQL Server (SQL) และ SQL Server Analysis Server (AS) หลายแกน RAM 16gb แต่ละคืน SQL Server จะทำการประมวลผลประมาณ 2-3 ชั่วโมงตามด้วยการประมวลผล AS 2-3 ชั่วโมง จากนั้นตลอดทั้งวันจะมีการสอบถามเฉพาะ AS สมมติว่านี่เป็นเซิร์ฟเวอร์เฉพาะและไม่มีแอพพลิเคชั่นอื่นใดที่เกี่ยวข้องและการประมวลผลทั้งสองชุดนั้นจะซิงโครนัสอย่างสมบูรณ์โดยไม่ทับซ้อนกันตลอดเวลา - ฉันจะตั้งค่าขีด จำกัด หน่วยความจำของเซิร์ฟเวอร์ SQL และ AS ได้อย่างไร เหตุผลที่ถามคือถ้าฉันไม่ได้ตั้งค่าขีด จำกัด สำหรับ SQL มันจะดึงหน่วยความจำทั้งหมดที่ทำได้ อย่างไรก็ตาม - ความเข้าใจของฉันคือ SQL จะปล่อยหน่วยความจำนี้อย่างมีความสุขถ้า: มันไม่ได้ใช้มันและ บริการ / โปรแกรมอื่นร้องขอ …

1
ล้างแคชของเซิร์ฟเวอร์ SQL และดิสก์ I / O
เรากำลังยุ่งกับการทดสอบระบบ OLTP ที่เราพัฒนาขึ้นใน. NET 4.0 และรัน SQL Server 2008 R2 ที่ด้านหลัง ระบบใช้คิวตัวแทนการบริการเซิร์ฟเวอร์ SQL ซึ่งมีประสิทธิภาพมาก แต่เรากำลังประสบกับแนวโน้มที่แปลกประหลาดขณะประมวลผล การร้องขอการประมวลผลของ SQL Server ที่อัตราการพองตัวเป็นเวลา 1 นาทีตามด้วยกิจกรรมการเขียนดิสก์ที่เพิ่มขึ้น ~ 20 วินาที กราฟต่อไปนี้แสดงให้เห็นถึงปัญหา Yellow = Transactions per second Blue = Total CPU usage Red = Sqlsrv Disk Write Bytes/s Green = Sqlsrv Disk Read Bytes/s ในระหว่างการแก้ไขปัญหาเราลองทำสิ่งต่อไปนี้โดยไม่มีการเปลี่ยนแปลงที่สำคัญในรูปแบบ: บริษัท ตัวแทนการเซิร์ฟเวอร์ …

1
เหตุใดฉันจึงไม่ได้รับข้อผิดพลาดของการกลายพันธุ์ของตารางในทริกเกอร์
เป็นที่ทราบกันดีว่าคุณไม่สามารถใช้คำสั่ง DML ในตารางการกลายพันธุ์ภายในทริกเกอร์ ข้อความที่ตัดตอนมาจากเอกสารของ Oracle : ตารางกลายพันธุ์เป็นตารางที่ถูกแก้ไขโดยคำสั่ง UPDATE, DELETE หรือ INSERT หรือตารางที่อาจได้รับการปรับปรุงโดยผลกระทบของข้อ จำกัด DELETE CASCADE เซสชั่นที่ออกคำสั่งเรียกไม่สามารถสอบถามหรือแก้ไขตารางการกลายพันธุ์ ข้อ จำกัด นี้ป้องกันไม่ให้ทริกเกอร์เห็นชุดข้อมูลที่ไม่สอดคล้องกัน อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมทริกเกอร์การสาธิตนี้ไม่ได้ล้มเหลวด้วยข้อผิดพลาด "การกลายพันธุ์ตาราง" เมื่อฉันทำการinsert into empใช้ SQL Developer หรือ SQL * Plus: CREATE OR REPLACE TRIGGER emp_bri BEFORE INSERT ON emp FOR EACH ROW BEGIN SELECT max(id) + 1 INTO :NEW.id FROM …

2
การสำรองข้อมูล SQL Server ล้มเหลว ข้อผิดพลาด: 3041, ความรุนแรง: 16, สถานะ: 1
ก่อนอื่นฉันเป็นคนใหม่ที่ stackexchange ดังนั้นโปรดอดทนกับฉัน ฉันใช้ SQL Server 9.0.4060 ปัญหาของฉันคือ: การสำรองข้อมูล SQL Server ของฉันล้มเหลวในฐานข้อมูลจำนวนมาก แผนการบำรุงรักษาทำงานกับงานสำรองต่าง ๆ : สำรอง DIFF ทุกวันเวลา 20:30 น. และสำรองเต็มทุกวันอาทิตย์เวลา 20:30 น. ฉันพบข้อผิดพลาดสองข้อนี้สำหรับฐานข้อมูลแต่ละตัวที่ไม่สามารถทำการสำรองข้อมูลได้สำเร็จ: Date 06-11-2012 20:31:06 Log SQL Server (Current - 07-11-2012 11:43:00) Source Backup Message BACKUP failed to complete the command BACKUP DATABASE (dbname) WITH DIFFERENTIAL. Check the …

1
การจำลองแบบ SQL Server Snapshot ทำสำเนาข้อมูลทุกครั้งหรือไม่
ฉันกำลังดูการจำลองแบบภาพรวมระหว่างเซิร์ฟเวอร์สองเครื่อง นี่คือสิ่งที่ฉันมี: ฐานข้อมูล 500GB ~ 500MB ต่อวันโหลด bcp ~ 50MB การทำธุรกรรมรายวัน ฉันถาม DBA อื่น ๆ ใน บริษัท เกี่ยวกับประเภทการจำลองแบบที่จะใช้ ฉันบอกให้ใช้การจำลองแบบ Snapshot อย่างไรก็ตามจากสิ่งที่ฉันเข้าใจและได้อ่านทุกคืนหลังจากโหลดสแน็ปช็อตจะคัดลอกฐานข้อมูลทั้งหมดไปยังผู้จัดจำหน่ายแล้วเขียนทับเซิร์ฟเวอร์อื่นอย่างสมบูรณ์ สแน็ปช็อตใช้งานได้ในเดลตาหรือเป็นสำเนาที่สมบูรณ์ทุกครั้งหรือไม่?

2
SQL Server 2012 Availability Group นั้นเป็น“ AlwaysON” หรือไม่
ในคลัสเตอร์ SQL Server แบบดั้งเดิมเมื่อเกิด failover ไคลเอนต์ทั้งหมดที่เชื่อมต่อกับ SQL Server ล้มเหลวเช่นการสูญเสียการเชื่อมต่อและลูกค้าแต่ละคนจะต้องสร้างการเชื่อมต่อใหม่ไปยังอินสแตนซ์คลัสเตอร์ล้มเหลว กลุ่มความพร้อมใช้งาน AlwaysON ลดปัญหานี้หรือไม่ failover ในกรณีที่กลุ่มความพร้อมใช้งาน SQL Server 2012 AlwaysON โปร่งใสให้กับลูกค้าที่เชื่อมต่อกับ SQL Server หรือไม่

4
MySQL InnoDB ล็อคกุญแจหลักในการลบแม้ใน READ COMMITTED
คำนำ แอปพลิเคชันของเราทำงานหลายเธรดที่ดำเนินการDELETEค้นหาแบบขนาน แบบสอบถามมีผลต่อข้อมูลที่แยกได้เช่นไม่ควรมีความเป็นไปได้ที่DELETEเกิดขึ้นพร้อมกันในแถวเดียวกันจากกระทู้แยก อย่างไรก็ตามตามเอกสาร MySQL ใช้ล็อคที่เรียกว่า 'คีย์ต่อไป' สำหรับDELETEงบซึ่งล็อคทั้งคีย์การจับคู่และช่องว่างบางส่วน สิ่งนี้นำไปสู่การล็อกที่ตายแล้วและทางออกเดียวที่เราพบคือใช้READ COMMITTEDระดับการแยก ปัญหา ปัญหาเกิดขึ้นเมื่อรันDELETEคำสั่งที่ซับซ้อนด้วยJOINs ของตารางขนาดใหญ่ ในบางกรณีเรามีตารางที่มีคำเตือนที่มีเพียงสองแถว แต่แบบสอบถามจำเป็นต้องวางคำเตือนทั้งหมดที่อยู่ในเอนทิตี้บางแห่งจากINNER JOINตาราง ed แยกสองตาราง แบบสอบถามมีดังนี้: DELETE pw FROM proc_warnings pw INNER JOIN day_position dp ON dp.transaction_id = pw.transaction_id INNER JOIN ivehicle_days vd ON vd.id = dp.ivehicle_day_id WHERE vd.ivehicle_id=? AND dp.dirty_data=1 เมื่อตาราง day_position มีขนาดใหญ่พอ (ในกรณีทดสอบของฉันมีแถว 1448) ธุรกรรมใด …

3
ข้อผิดพลาดประสิทธิภาพการทำงานดัชนีดัชนี SQL Server 2008 datetime
เรากำลังใช้ SQL Server 2008 R2 และมีตารางที่มีขนาดใหญ่มาก (100M + แถว) ที่มีดัชนี id หลักและdatetimeคอลัมน์ที่มีดัชนีที่ไม่เป็นคลัสเตอร์ เราจะเห็นพฤติกรรมลูกค้า / เซิร์ฟเวอร์บางสูงผิดปกติขึ้นอยู่กับการใช้งานของนั้นorder byข้อโดยเฉพาะในคอลัมน์วันที่และเวลาการจัดทำดัชนี ฉันอ่านข้อความต่อไปนี้: /programming/1716798/sql-server-2008-ordering-by-datetime-is-too-slow แต่มีอะไรเกิดขึ้นกับไคลเอนต์ / เซิร์ฟเวอร์มากกว่าสิ่งที่เป็น เริ่มอธิบายที่นี่ หากเราเรียกใช้แบบสอบถามต่อไปนี้ (แก้ไขเพื่อป้องกันเนื้อหาบางส่วน): select * from [big table] where serial_number = [some number] order by test_date desc แบบสอบถามหมดเวลาทุกครั้ง ใน SQL Server Profiler แบบสอบถามที่ดำเนินการจะมีลักษณะเช่นนี้กับเซิร์ฟเวอร์: exec sp_cursorprepexec @p1 output,@p2 output,NULL,N'select * …

2
ผลกระทบของการเปลี่ยนระดับความเข้ากันได้ของฐานข้อมูลสำหรับฐานข้อมูลที่จำลองแบบที่เผยแพร่จาก 90 เป็น 100
ฉันมีเซิร์ฟเวอร์ SQL Server 2008 R2 ที่มีฐานข้อมูลที่เผยแพร่ซึ่งปัจจุบันทำงานภายใต้ระดับความเข้ากันได้ 90 (2005) ฐานข้อมูลการสมัครสมาชิกเป็น SQL Server 2008 R2 ด้วยอย่างไรก็ตามฐานข้อมูลปลายทางจะถูกตั้งค่าเป็นระดับความเข้ากันได้ 100 และการจำลองแบบทำงานได้ดี หากฉันเปลี่ยนระดับความเข้ากันได้สำหรับฐานข้อมูลที่เผยแพร่แล้วจะมีผลต่อการจำลองแบบในทางใดทางหนึ่งหรือจะเป็นกรณีของการเริ่มต้นการสมัครสมาชิกใหม่ทั้งหมดและเริ่มการจำลองแบบใหม่หรือไม่ ฉันสงสัยว่าการเปลี่ยนระดับความเข้ากันได้ของฐานข้อมูลที่เผยแพร่อาจเปลี่ยนแปลงวิธีการที่การจำลองแบบที่เก็บไว้ทำงานเล็กน้อย แต่ฉันไม่แน่ใจ 100% เป็นกรณีนี้หรือไม่?

1
ฟัง IOCP ที่ไม่ให้ผล
ไม่มีใครรู้ว่าสิ่งที่ "ฟัง IOCP ฟังไม่" หมายถึงอะไร? บนเซิร์ฟเวอร์ SQL ของเราเพิ่งมีการตรวจสอบจุดบกพร่อง: ===================================================================== BugCheck Dump ===================================================================== This file is generated by Microsoft SQL Server version 9.00.5292.00 upon detection of fatal unexpected error. Please return this file, the query or program that produced the bugcheck, the database and the error log, and any other pertinent …

2
นอกเหนือจากการรีสตาร์ท SQL Server มีวิธีใดที่จะบังคับให้ SQLCLR AppDomain ถูกรีเซ็ตหรือไม่
ฉันต้องการบังคับให้ AppDomain ใช้ SQLCLR เพื่อทำการรีเซ็ต ฉันจะทำสิ่งนั้นนอกเหนือจากการรีสตาร์ทอินสแตนซ์ SQL Server ได้อย่างไร

3
ฐานข้อมูลเริ่มต้นเสมอในโหมดการกู้คืน
ทุกครั้งที่ฉันรีสตาร์ทเซิร์ฟเวอร์ฐานข้อมูลจะอยู่ในโหมดการกู้คืนเสมอและใช้เวลาประมาณ 20 นาทีเพื่อให้ทำงานได้ตามปกติ สิ่งนี้จะเกิดขึ้นเสมอเมื่อฉันรีสตาร์ทเซิร์ฟเวอร์ดังนั้นฉันจึงมีคำถามสองสามข้อ ... ฉันบอกว่าอาจเกิดจากไฟล์บันทึกขนาดใหญ่? นั่นถูกต้องไหม ถ้าไม่เช่นนั้นจะมีสาเหตุอะไรอีก? ฉันต้องการลดพื้นที่ของล็อกไฟล์เพื่อป้องกันการกู้คืน สิ่งที่ดีกว่า: การหดหรือตัดทอน ฉันจะลดขนาดหรือตัดทอนไฟล์บันทึก / ฐานข้อมูลเพื่อลดขนาดได้อย่างไร ไวยากรณ์คืออะไร ฉันกำลังใช้ Microsoft SQL Server 2008

1
วิธีที่ดีที่สุดในการนำเข้าข้อมูลจำนวนมากอีกครั้งด้วยเวลาหยุดทำงานน้อยที่สุด
ฉันต้องการนำเข้าประมาณ 500,000 รายการที่มีข้อมูลการค้นหา IP (การอ้างอิงแบบอ่านอย่างเดียว) ประมาณสัปดาห์ละครั้ง (คอลัมน์ int / bigint เพียงสามครั้ง) ฉันไม่ต้องการกังวลเกี่ยวกับการรวมข้อมูลกับตารางที่มีอยู่ฉันต้องการล้างข้อมูลเก่าและนำเข้าใหม่ แบบสอบถามที่ใช้งานได้ดีในการเรียกใช้ข้อมูลจะยังคงทำงานต่อไป (เราไม่ได้รับสิ่งเหล่านี้จำนวนมากและเป็นที่ยอมรับสำหรับพวกเขาที่จะทำงานช้าลงเล็กน้อยในขณะที่การนำเข้าเกิดขึ้น แต่ต้องเพิ่มขึ้นทุกวันตลอด 24 ชั่วโมง หมดเวลา "ไม่ใช่ตัวเลือก) สิ่งที่พยายามจนถึงตอนนี้ SSIS: ฉันได้สร้างแพ็คเกจ SSIS ที่ตัดทอนตารางและการนำเข้าออก - ใช้เวลาประมาณ 30 วินาทีในการเรียกใช้ (ยาวเกินไปจริง ๆ ) ตารางชั่วคราว: การนำเข้าสู่ตารางชั่วคราวการตัดและคัดลอกข้ามนั้นใช้เวลาประมาณ 30 วินาที BCP: การนำเข้าจำนวนมากก็ค่อนข้างช้าเกินไป (ด้วยเหตุผลบางอย่างมันช้ากว่า SSIS (แม้ว่าจะไม่มีดัชนีที่จะรักษาไว้) - ฉันคิดว่ามันเป็นเรื่องเกี่ยวกับการทำธุรกรรม char-> int / bigint: / โต๊ะกระจก ดังนั้นในขณะนี้ฉันสงสัยเกี่ยวกับการอ่านตารางผ่านมุมมองนำเข้าข้อมูลลงในตารางกระจกและเปลี่ยนมุมมองให้ชี้ไปที่ตารางนี้ ... …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.