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

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

7
DBA จำเป็นต้องรู้วิธีการเขียนโปรแกรมในภาษาของระบบนอกเหนือจาก SQL หรือไม่?
ผู้ดูแลฐานข้อมูลจำเป็นต้องรู้ภาษาหรือระบบการเขียนโปรแกรมระดับแอปพลิเคชัน (ตัวอย่างเช่น. NET หรือ PHP) นอกเหนือจาก "just SQL" หรือไม่? สำหรับวัตถุประสงค์ของคำถามนี้จะไม่มีการพิจารณามาตรฐาน SQL เฉพาะรุ่นสำหรับคำตอบนี้ (SQL ANSI 86, SQL ISO 87, SQL: 2008) เนื่องจากคำถามนี้เกี่ยวกับภาษาเดสก์ท็อปหรือเซิร์ฟเวอร์นอกขอบเขตของ SQL

4
ทำไม NULL จึงถูกเรียงลำดับก่อน
ทำไมเมื่อเรามีค่า NULL ในคอลัมน์และเราเรียงตามค่าจากน้อยไปมาก NULL จะถูกเรียงลำดับก่อน select 1 as test union all select 2 union all select NULL union all select 3 union all select 4 order by test ผลลัพธ์ใน NULL 1 2 3 4 ฉันคิดว่า NULL หมายถึง "ไม่ทราบแน่ชัด" หรือเป็นไปได้ "ไม่ทราบ" หากเป็นจริงพวกเขาจะไม่เรียงลำดับล่าสุดเนื่องจากค่าอาจมากกว่าค่าอื่น ๆ ทั้งหมดหรือไม่ (หรือนี่เป็นตัวเลือกการจัดเรียงที่อื่น) ฉันใช้ SQL Server 2008R2 แต่ฉันสงสัยว่านี่เป็นความจริงในทุกเซิร์ฟเวอร์ SQL …

1
วิธีใช้ธุรกรรมกับ SQL Server DDL
ฉันมีตารางเข้าสู่ระบบที่แทรกทั้งหมดจะทำโดยขั้นตอนการจัดเก็บเดียว CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …

1
เมื่อใดควรใช้เหตุการณ์เพิ่มเติมแทน SQL Profiler / perfmon
เหตุการณ์เพิ่มเติมดูเหมือนว่าเทคโนโลยีที่ดีกว่าและความเครียดน้อยลงบนเซิร์ฟเวอร์ แต่ตัวสร้างโปรไฟล์ SQL / perfmon มีเครื่องมือที่ดีกว่า นอกจากนี้เหตุการณ์ที่ยืดออกดูเหมือนจะมีช่วงการเรียนรู้ที่ชันกว่า ควรใช้แต่ละบริบทในลักษณะใด มันคุ้มหรือไม่ที่จะผ่านโค้งการเรียนรู้ที่สูงชันเพื่อใช้ประโยชน์จากเหตุการณ์ที่ขยายออกไป

2
ดัชนีเทียบกับพาร์ติชัน
เหตุใดจึงไม่สามารถปรับปรุงประสิทธิภาพด้วยดัชนีเท่านั้นดังนั้นเทคนิคอื่น ๆ เช่นการแบ่งพาร์ติชันตารางจึงมีความจำเป็น? คำถามนั้นเกี่ยวกับประสิทธิภาพแน่นอนว่าพาร์ทิชันที่แตกต่างกันสามารถใส่ลงในพื้นที่ตารางที่แตกต่างกันซึ่งมีเอฟเฟกต์อื่น ๆ ที่ไม่สามารถทำได้ด้วยดัชนี หรือกล่าวอีกนัยหนึ่งคือประสิทธิภาพที่ชาญฉลาด: เป็นไปได้หรือไม่ที่จะปรับปรุงประสิทธิภาพเดียวกันด้วยดัชนีเช่นเดียวกับการแบ่งพาร์ติชันของตาราง?

2
การบล็อกคืออะไรและเกิดขึ้นได้อย่างไร
ฉันพยายามค้นหาข้อมูลบางอย่างเกี่ยวกับการบล็อกใน SQL Server แต่ไม่พบคำอธิบายที่กระชับสำหรับสิ่งที่เป็นและวิธีการที่เกิดขึ้น คุณช่วยบอกฉันทีได้ไหม

5
คอลัมน์ว่างเปล่าใช้พื้นที่ในตารางหรือไม่?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีตารางที่เก็บจากข้อมูลพื้นฐานมาก เพียงแค่ชื่อและเขตข้อมูลวันที่ไม่กี่ มีเขตข้อมูลหนึ่งที่เรียกว่าความคิดเห็นซึ่งเป็น varchar (4000) ส่วนใหญ่เวลาที่เราเว้นว่างไว้ แต่บางครั้งจะป้อนข้อมูลจำนวนมากที่นี่ นี่เป็นการออกแบบที่ไม่ดีจริงเหรอ? หรือนี่เป็นเพียงเล็กน้อยที่ไม่มีประสิทธิภาพ? ฉันจะถือว่าการสร้างตารางแยกสำหรับคอลัมน์นี้จะดีกว่า หมายเหตุ: นี่คือ sql server 2008

1
วิธีรับแถว MAX
ใน SQL Server ฉันพบว่ามันเป็นความเจ็บปวดที่จะได้รับแถวสูงสุดสำหรับชุดข้อมูลฉันกำลังมองหารายการของวิธีการดึงแถวสูงสุดด้วยคำแนะนำเกี่ยวกับประสิทธิภาพและการบำรุงรักษา ตารางตัวอย่าง: DECLARE @Test TABLE (ID INT IDENTITY(1,1), name VARCHAR(50), dateOfBirth DATETIME, TaxNumber varchar(10)) INSERT INTO @Test (name, dateOfBirth, TaxNumber) SELECT 'Fred', convert(datetime, '25/01/1976', 103), '123' UNION ALL SELECT 'Bob', convert(datetime, '03/03/1976', 103), '234' UNION ALL SELECT 'Jane', convert(datetime, '13/06/1996', 103), '345' UNION ALL SELECT 'Fred', convert(datetime, …
20 sql-server 

6
มีเครื่องมือที่ดีและฟรีสำหรับจัดการฐานข้อมูล PostgreSQL หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Exchange Administrators Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ก่อนหน้านี้ฉันใช้ phpmyadmin เพื่อจัดการฐานข้อมูล MySQL แต่ตอนนี้ฉันต้องการจัดการฐานข้อมูล PostgreSQL ฐานข้อมูล PostgreSQL อยู่บนเซิร์ฟเวอร์ แต่ไม่ใช่เว็บเซิร์ฟเวอร์ดังนั้นฉันจึงไม่ใช้ PHP มีเครื่องมือที่ดีและฟรีสำหรับจัดการฐานข้อมูล PostgreSQL หรือไม่? ฉันได้ลองกับ pgAdmin III แต่มันไกลจากแอพพลิเคชั่นที่ใช้งานง่ายเมื่อเทียบกับ phpmyadmin ที่ฉันเคยใช้มาก่อน DBA ที่ PostgreSQL ใช้บ่อยคืออะไร พวกเขาใช้เครื่องมือกราฟิกเช่น pgAdmin III หรือเป็นเครื่องมือบรรทัดคำสั่งส่วนใหญ่หรือไม่

2
สร้างบันทึกการทำธุรกรรมขึ้นใหม่
เรามีฐานข้อมูลขนาดใหญ่มาก (~ 6TB) ซึ่งไฟล์บันทึกธุรกรรมถูกลบ (ในขณะที่ SQL Server ปิดตัวลงเราได้ลอง: การถอดและติดตั้งฐานข้อมูลอีกครั้ง และ การยกเลิกการลบไฟล์บันทึกธุรกรรม ... แต่ยังไม่มีอะไรทำงาน เรากำลังทำงานอยู่: ALTER DATABASE <dbname> REBUILD LOG ON (NAME=<dbname>,FILENAME='<logfilepath>') ... แต่ด้วยขนาดของฐานข้อมูลอาจใช้เวลาสองสามวันจึงจะเสร็จสมบูรณ์ คำถาม มีความแตกต่างระหว่างคำสั่งด้านบนและคำสั่งต่อไปนี้หรือไม่? DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS) เราควรจะดำเนินการREPAIR_ALLOW_DATA_LOSSแทนหรือไม่ เป็นที่น่าสังเกตว่าข้อมูลนั้นมาจากแหล่งอื่น ๆ เพื่อให้สามารถสร้างฐานข้อมูลใหม่ได้อย่างไรก็ตามเราสงสัยว่าจะซ่อมแซมฐานข้อมูลได้เร็วกว่าการแทรกข้อมูลทั้งหมดอีกครั้ง ปรับปรุง สำหรับคะแนนการรักษาเหล่านั้น: ALTER DATABASE/REBUILD LOGคำสั่งเสร็จสิ้นหลังจากประมาณ 36 ชั่วโมงและรายงาน: คำเตือน: บันทึกสำหรับฐานข้อมูล 'dbname' ได้ถูกสร้างขึ้นใหม่ ความสอดคล้องของธุรกรรมสูญหายไป สายโซ่ RESTORE ใช้งานไม่ได้และเซิร์ฟเวอร์ไม่มีบริบทในไฟล์บันทึกก่อนหน้านี้อีกต่อไปดังนั้นคุณจะต้องรู้ว่าไฟล์เหล่านั้นคืออะไร คุณควรรัน DBCC …

4
"สร้างดัชนี" ใน MySQL เป็นการดำเนินการเชิงเส้นหรือไม่
สิ่งที่ฉันหมายถึงคือต่อไปนี้: หากสร้างดัชนีบนตารางที่มีnแถวต้องใช้tเวลา จะสร้างดัชนีในตารางเดียวกันกับ1000*nใช้เวลาประมาณ1000*tเวลา สิ่งที่ฉันพยายามทำให้สำเร็จคือการประเมินเวลาที่ใช้ในการสร้างดัชนีในฐานข้อมูลการผลิตโดยการสร้างดัชนีเดียวกันในฐานข้อมูลทดสอบขนาดเล็กมาก
20 mysql  index 

5
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง ยกตัวอย่างเช่นเป็นความคิดที่ดีที่จะวางบางสิ่งเช่น tbl_ ไว้ที่จุดเริ่มต้นของชื่อตารางหรือไม่ ฉันควรกำหนดตารางรหัส / ค้นหาในบางวิธีเช่น ct_, lut_ หรือ codes_ หรือไม่ มีคนอื่นทำหรือไม่? ฉันใช้ MS SQL Server และมีฐานข้อมูลจำนวนมากที่มีตารางจำนวนมากดังนั้นมันก็ดีที่มีสิ่งที่เราสามารถใช้เป็นมาตรฐานที่มีเหตุผลสนับสนุนบางอย่าง

5
แบบสอบถามที่ดีที่สุดที่จะใช้เพื่อตรวจสอบสถานะของฐานข้อมูล SQL Server คืออะไร
ฉันต้องการที่จะเรียกใช้แบบสอบถามเพื่อรับข้อมูลที่สำคัญเกี่ยวกับสถานะของฐานข้อมูล เช่นฉันต้องการให้แบบสอบถามสามารถบอกได้ว่าฐานข้อมูลอยู่ในสภาพดีหรือไม่ นี่คือแบบสอบถามที่ฉันสืบทอดมาสำหรับการตรวจสอบนี้: SELECT name AS [SuspectDB], DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect], DATABASEPROPERTY(name, N'IsOffline') AS [Offline], DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency], has_dbaccess(name) AS [HasDBAccess] FROM sysdatabases WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1) OR (DATABASEPROPERTY(name, N'IsOffline') = 1) OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1) OR (has_dbaccess(name) = 0) หากเคียวรีนั้นส่งคืนผลลัพธ์ใด ๆ ข้อสันนิษฐานที่กำลังทำอยู่คือฐานข้อมูลอยู่ในสถานะสงสัยหรืออาจไม่ดี มีวิธีที่ดีกว่าในการทำเช่นนี้?

5
การใช้ IF ใน T-SQL จะทำให้แผนการดำเนินการแคชอ่อนลงหรือไม่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา มีการแนะนำให้ฉันว่าการใช้คำสั่ง IF ใน t-SQL batches นั้นเป็นอันตรายต่อประสิทธิภาพ ฉันพยายามค้นหาคำยืนยันหรือตรวจสอบยืนยันนี้ ฉันใช้ SQL Server 2005 และ 2008 การยืนยันคือชุดที่มีดังต่อไปนี้: - IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END SQL Server ไม่สามารถใช้แผนการดำเนินการที่สร้างขึ้นใหม่ได้เนื่องจากการดำเนินการครั้งต่อไปอาจต้องใช้สาขาอื่น นี่หมายความว่า SQL Server จะกำจัดหนึ่งสาขาทั้งหมดจากแผนการดำเนินการตามพื้นฐานของการดำเนินการปัจจุบันซึ่งสามารถกำหนดสาขาที่ต้องการได้แล้ว นี่เป็นเรื่องจริงหรือ …

1
วิธีการเปลี่ยน schema ของกระบวนงานที่เก็บไว้โดยไม่สร้างขึ้นใหม่
ฉันมีขั้นตอนการจัดเก็บบางส่วนที่มีสคีมา "SalesTraining" ฉันต้องการเปลี่ยน schemas SalesTraining ทั้งหมดเป็น "Sales" มีวิธีใดที่ดีไปกว่าการสร้างขั้นตอนการจัดเก็บใหม่ ขอบคุณ
20 sql-server 

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