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

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

2
การเพิ่มประสิทธิภาพ: การย้ายการประกาศตัวแปรไปยังด้านบนของกระบวนการของคุณ
ในขณะที่ทำงานเกี่ยวกับการเพิ่มประสิทธิภาพของโพรซีเดอร์ที่เก็บไว้บางอย่างฉันก็นั่งลงกับ DBA และผ่านขั้นตอนที่เก็บไว้บางอย่างที่มีการบล็อกสูงและ / หรือกิจกรรมการอ่าน / เขียนสูง สิ่งหนึ่งที่ DBA กล่าวถึงคือฉันควรประกาศตัวแปรทั้งหมด (โดยเฉพาะอย่างยิ่งตัวแปรTABLEที่ด้านบนสุดของโพรซีเดอร์ที่เก็บไว้เพื่อหลีกเลี่ยงการคอมไพล์ซ้ำ นี่เป็นครั้งแรกที่ฉันเคยได้ยินเรื่องนี้และกำลังมองหาการยืนยันบางอย่างก่อนที่จะกลับไปสู่ขั้นตอนการจัดเก็บที่แตกต่างกันทั้งหมดที่เรามี เขาเรียกมันว่า "การดูรหัสล่าช้า" และการคอมไพล์ใหม่กำลังล็อคสคีมาซึ่งจะอธิบายการบล็อก การย้ายการประกาศตัวแปรทั้งหมดไปยังด้านบนของโพรซีเดอร์ที่เก็บไว้ของคุณจะลดการคอมไพล์ใหม่หรือไม่?

2
ทำไม“ SELECT POWER (10.0, 38.0);” โยนข้อผิดพลาดทางคณิตศาสตร์มากเกินไป?
ฉันอัปเดตของฉันIDENTITYสคริปต์เช็คล้นไปยังบัญชีสำหรับDECIMALและNUMERIC IDENTITYคอลัมน์ เป็นส่วนหนึ่งของการตรวจสอบฉันคำนวณขนาดของช่วงชนิดข้อมูลสำหรับทุกIDENTITYคอลัมน์ ฉันใช้มันเพื่อคำนวณเปอร์เซ็นต์ของช่วงนั้นหมดไป สำหรับDECIMALและNUMERIC ขนาดของช่วงนั้นเป็น2 * 10^p - 2ที่ที่pมีความแม่นยำ ฉันสร้างกลุ่มตารางทดสอบด้วยDECIMALและNUMERIC IDENTITYคอลัมน์และพยายามคำนวณช่วงดังนี้: SELECT POWER(10.0, precision) FROM sys.columns WHERE is_identity = 1 AND type_is_decimal_or_numeric ; สิ่งนี้ทำให้เกิดข้อผิดพลาดต่อไปนี้: Msg 8115, Level 16, State 6, Line 1 Arithmetic overflow error converting float to data type numeric. ฉัน จำกัด ให้แคบลงไปยังIDENTITYคอลัมน์ประเภทDECIMAL(38, 0)(เช่นด้วยความแม่นยำสูงสุด) ดังนั้นฉันจึงลองPOWER()คำนวณโดยตรงกับค่านั้น แบบสอบถามต่อไปนี้ทั้งหมด SELECT POWER(10.0, …

1
ความหมายของประสิทธิภาพของการใช้ OPENQUERY ในมุมมอง
โปรดดูคำถามนี้ใน stackoverflow: ฉันใช้ไดรเวอร์ EasySoft ODBC เพื่อเชื่อมโยงอินสแตนซ์ของ SQL Server 2008 R2 Express ไปยัง Interbase และฉันประสบปัญหาในการรับข้อมูลเมตาจากเซิร์ฟเวอร์ระยะไกล จากการมองหาบนเครือข่าย sugestions หลักทั้งหมดพูดถึงการใช้ OPENQUERY แทนไวยากรณ์เซิร์ฟเวอร์ที่เชื่อมโยงสี่ส่วน EG วิธีการปัจจุบันของฉัน (มีปัญหา) คือ ... CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK) แต่ในบางตารางฉันได้รับข้อผิดพลาดเมื่อเรียกดู ... ข่าวสารเกี่ยวกับ 7353 ระดับ 16 สถานะ 1 บรรทัด 1 ตัวให้บริการ OLE DB "MSDASQL" สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง "LBLIVE" …

2
SET NULL มีวัตถุประสงค์ในการลบ / อัพเดทข้อ จำกัด กุญแจต่างประเทศอย่างไร?
ฉันอาจจะใจแคบ แต่ถ้าฉันสร้างข้อ จำกัด คีย์ต่างประเทศและแถวได้รับการปรับปรุงหรือลบฉันจะสูญเสียการเชื่อมต่อนั้นถ้าคอลัมน์ของตารางลูกได้รับการตั้งค่าเป็นโมฆะ อะไรคือจุดประสงค์ของการเก็บแถวกำพร้าเหล่านี้ไว้โดยเจตนา?
15 foreign-key  null 

5
การจัดทำดัชนีตั้งแต่เริ่มต้นหรือเมื่อเกิดปัญหาประสิทธิภาพ
คำถามของฉันเกี่ยวกับการใช้ดัชนี ฉันควรเริ่มต้นสร้างดัชนีตั้งแต่เริ่มต้นหรือเมื่อมีปัญหาเรื่องประสิทธิภาพหรือไม่ นอกจากนี้เรายังสามารถสร้างดัชนีชั่วคราวขณะดำเนินการค้นหา อะไรคือข้อดีข้อเสียของเทคนิคดังกล่าว?

3
heaps ถูกพิจารณาว่าเป็นโครงสร้างดัชนีหรือเป็นโครงสร้างตารางที่ไม่มีดัชนีหรือไม่?
แรงบันดาลใจจากโพสต์นี้: https://twitter.com/#!/SQLChicken/status/102930436795285505 ฮีป: พวกเขาพิจารณาโครงสร้างดัชนีหรือเป็นโครงสร้างตารางที่ไม่มีดัชนีหรือไม่
15 sql-server  heap 

3
การแจ้งเตือนเกี่ยวกับการสอบถามที่ยาวนานหรือการหยุดชะงักใน SQL Server 2008 R2
ฉันต้องการทราบว่ามีวิธีส่งการแจ้งเตือนเรื่องการหยุดชะงักหรือไม่ ถ้าเป็นเช่นนั้นจะต้องมีแบบสอบถามใด ฉันเข้าใจว่า SQL Server ดูแลการหยุดชะงักฉันเพียงต้องการข้อมูลเกี่ยวกับแบบสอบถามที่เกี่ยวข้อง ฉันพบสิ่งต่อไปนี้เพื่อกำหนดแบบสอบถามที่ใช้เวลานาน: SELECT creation_time ,last_execution_time ,total_physical_reads ,total_logical_reads ,total_logical_writes , execution_count , total_worker_time , total_elapsed_time , total_elapsed_time / execution_count avg_elapsed_time ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) …
15 query  deadlock 

3
แผนการบำรุงรักษา SQL Server แนวปฏิบัติที่ดีที่สุดมีลักษณะอย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นนักเรียนจากมหาวิทยาลัย Fontys ใน Eindhoven และขณะนี้ฉันกำลังดำเนินการสัมภาษณ์หลายชุดเพื่อช่วยในการพัฒนาเครื่องมือ SQL Server และฉันต้องการรับคำติชมจากผู้เชี่ยวชาญในสาขานี้ หนึ่งในคำถามของฉันคือ: แผนการบำรุงรักษา SQL Server แนวปฏิบัติที่ดีที่สุดมีลักษณะอย่างไร คุณใช้แผนการบำรุงรักษาของ SQL Server สำหรับสิ่งนี้หรือคุณใช้สคริปต์ที่กำหนดเองได้หรือไม่?

1
ไม่สามารถปล่อยผู้ใช้นิรนามจาก mysql.user
ฉันพยายามที่จะ DROP ผู้ใช้ที่ไม่ระบุชื่อจากฐานข้อมูล mysql.users ของฉัน อย่างไรก็ตามฉันได้รับพฤติกรรมแปลก ๆ เมื่อฉันป้อนคำสั่ง: DROP User ''@'WOPR'; ฉันได้รับข้อความแสดงข้อผิดพลาดทั่วไป ดังนั้นฉันรีบูทเครื่องและลองอีกครั้ง คราวนี้ฉันได้รับคำตอบ Query OK, 0 rows affected. แต่เมื่อใส่แล้ว SELECT User, Host, Password FROM mysql.user WHERE User=''; ผลตอบแทนคือ: +------+------+----------+ | User | Host | Password | +------+------+----------+ | | WOPR | | +------+------+----------+ (WOPR เป็นชื่อโฮสต์ของฉัน) ฉันเรียกใช้คำสั่ง DROP User ''@'WOPR'; …
15 mysql 



3
ทำไมการตั้งค่า. my.cnf ของฉันไม่ทำงาน
ฉันมีไฟล์. my.cnf ในโฮมไดเร็กตอรี่ของฉันบนเดสก์ท็อปที่มี: [dbid] user = myusername password = mypassword database = dbname host = server.location.com ถ้าฉันจำได้ถูกต้องก่อนอัพเกรดจาก Ubuntu 10.04 เป็น 11.04 ฉันสามารถใช้คำสั่งได้ mysql dbid เพื่อเชื่อมต่อโดยตรงกับฐานข้อมูล แต่วันนี้ฉันได้รับข้อผิดพลาดนี้: ERROR 1049 (42000): Unknown database 'dbname' ฉันทำอะไรผิดหรือเปล่า?

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


3
เร่งการแปลง MyISAM เป็น InnoDB
ฉันมีเซิร์ฟเวอร์ mysql 5.1 ที่มีฐานข้อมูลประมาณ 450 ตารางกินพื้นที่ 4GB ตารางเหล่านี้ส่วนใหญ่ (ทั้งหมดยกเว้น 2) คือ MyIsam สิ่งนี้ได้ดีสำหรับส่วนใหญ่ (ไม่ต้องการธุรกรรม) แต่แอปพลิเคชันได้รับปริมาณการใช้งานและตารางบางอย่างได้รับผลกระทบเนื่องจากการล็อกตารางในการปรับปรุง นั่นคือเหตุผลที่ 2 ของตารางคือ InnoDB ตอนนี้ การแปลงในตารางที่เล็กกว่า (100k แถว) ไม่ใช้เวลานานเลยทำให้การหยุดทำงานน้อยที่สุด อย่างไรก็ตามตารางการติดตามของฉันบางส่วนกำลังเข้าใกล้ 50 ล้านแถว มีวิธีเพิ่มความเร็วALTER TABLE...ENGINE InnoDBในตารางขนาดใหญ่หรือไม่? และถ้าไม่มีวิธีอื่นในการแปลงการหยุดทำงานน้อยที่สุดในตารางเขียนหนักเหล่านี้?

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