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

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

3
ความแตกต่างของประสิทธิภาพสำหรับ COALESCE เทียบกับ ISNULL หรือไม่
ฉันเคยเห็นผู้คนจำนวนมากใช้ฟังก์ชัน COALESCE แทน ISNULL จากการค้นหาทางอินเทอร์เน็ตฉันพบว่า COALESCE เป็นมาตรฐาน ANSI ดังนั้นจึงมีข้อได้เปรียบที่เรารู้ว่าจะเกิดอะไรขึ้นเมื่อใช้งาน อย่างไรก็ตาม ISNULL อ่านง่ายขึ้นเนื่องจากดูเหมือนชัดเจนยิ่งขึ้นว่ากำลังทำอะไรอยู่ ฉันยังตระหนักว่า ISNULL นั้นค่อนข้างยุ่งยากเนื่องจากมันทำงานต่างกันในเซิร์ฟเวอร์ฐานข้อมูลที่แตกต่างกัน จากทั้งหมดนี้ในใจของฉันทำให้สไตล์และมาตรฐานเป็นที่ชื่นชอบ มีรูปแบบที่เป็นอัตนัยมีเหตุผลใดบ้างที่จะใช้ COALESCE บน ISNULL (หรือในทางกลับกัน) มีข้อได้เปรียบด้านประสิทธิภาพการทำงานของอีกตัวหนึ่งหรือไม่?

6
ฉันจะสร้างปัญหาฐานข้อมูลต่อลูกค้าหนึ่งรายได้อย่างไร
ผมจำได้จากพอดคาสต์ StackOverflow ว่าหมอกครีกใช้ฐานข้อมูลต่อลูกค้าสำหรับFogbugz ฉันคิดว่านั่นหมายถึงเซิร์ฟเวอร์ Fogbugz On Demand มีฐานข้อมูลนับหมื่น ๆ เราเพิ่งเริ่มพัฒนาเว็บแอปและมีปัญหาคล้ายกันในการแก้ปัญหา (ลูกค้าจำนวนมากที่มีข้อมูลแยกต่างหากของตัวเอง) ฉันควรคาดหวังปัญหาอะไรบ้างเมื่อใช้ฐานข้อมูลต่อลูกค้าหนึ่งราย ฉันจะแก้ปัญหาได้อย่างไร ความคิดเริ่มต้นของฉัน ข้อดีของฐานข้อมูลต่อลูกค้า สคีมาฐานข้อมูลที่ง่ายขึ้น การสำรองข้อมูลที่ง่ายขึ้น - คุณสามารถสำรองข้อมูลลูกค้าแต่ละรายโดยไม่ส่งผลกระทบต่อลูกค้ารายอื่น ทำให้ง่ายต่อการส่งออกข้อมูลลูกค้าที่ระบุ ประสิทธิภาพแคชที่ดีขึ้น - การเขียนลงในหนึ่งในแอ็คทีฟตารางจะมีผลกับลูกค้ารายเดียวที่ดำเนินการเขียนเท่านั้น ง่ายต่อการปรับขนาดข้ามฮาร์ดแวร์ ตัวอย่างเช่นเมื่อเราต้องไปจากเซิร์ฟเวอร์ 1 ถึง 2 เราเพิ่งย้ายลูกค้าของเราครึ่งหนึ่งไปยังเซิร์ฟเวอร์ใหม่ ข้อเสีย MySQL สามารถรับมือกับ 5,000 ฐานข้อมูลได้หรือไม่ ประสิทธิภาพจะแย่ไหม? การเปลี่ยนแปลงสคีมานั้นยากที่จะทำซ้ำในฐานข้อมูลทั้งหมด เราจะต้องมีแผนอัตโนมัติสำหรับสิ่งนี้เช่นการกำหนดเวอร์ชันของสคีมาและสคริปต์ที่เข้าใจวิธีการใช้ฐานข้อมูลจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่ง การทำสิ่งใด ๆ ที่เป็นเรื่องปกติสำหรับลูกค้าของเราทุกคนอาจทำให้เกิดความอึดอัดหรือเป็นไปไม่ได้ คล้ายกับข้างต้น แต่การวิเคราะห์ใด ๆ ที่เราต้องการดำเนินการกับลูกค้าทั้งหมดของเราอาจเป็นไปไม่ได้ เราควรติดตามการใช้งานของลูกค้าทั้งหมดอย่างไร

12
เหตุใดการจับคู่คีย์ / คีย์ต่างประเทศจึงไม่ถูกใช้เพื่อการเข้าร่วม
เท่าที่ฉันสามารถหา DBMSs จำนวนมาก (เช่น mysql, postgres, mssql) ใช้ชุดค่าผสม fk และ pk เพียงเพื่อ จำกัด การเปลี่ยนแปลงข้อมูล แต่ไม่ค่อยมีการใช้วิธีเลือกคอลัมน์เพื่อเข้าร่วมโดยอัตโนมัติ ทำไมถึงเป็นอย่างนั้น? หากคุณกำหนดความสัมพันธ์ระหว่าง 2 ตารางด้วย pk / fk แล้วทำไมฐานข้อมูลไม่สามารถระบุได้ว่าถ้าฉันเข้าร่วมตารางเหล่านั้นฉันต้องการเข้าร่วมในคอลัมน์ pk / fk แก้ไข: เพื่อชี้แจงนี้เล็กน้อย: สมมติว่าฉันมี table1 และ table2 ตารางที่ 1 มีคีย์ต่างประเทศในคอลัมน์ a ซึ่งอ้างอิงถึงคีย์หลักในตารางที่ 2 คอลัมน์ b ตอนนี้ถ้าฉันเข้าร่วมตารางเหล่านี้ฉันจะต้องทำสิ่งนี้: SELECT * FROM table1 JOIN table2 ON table1.a = …
48 mysql  sql-server 

2
มีความแตกต่างระหว่าง NUMERIC และ DECIMAL หรือไม่?
ฉันรู้ว่าชนิดข้อมูล NUMERIC และ DECIMAL ใน SQL Server ทำงานเหมือนกัน: ไวยากรณ์สำหรับการสร้างนั้นเหมือนกันช่วงของค่าที่คุณสามารถจัดเก็บได้นั้นเหมือนกัน ฯลฯ อย่างไรก็ตามเอกสาร MSDN อธิบายถึงความสัมพันธ์ระหว่างสองสิ่งนี้: ตัวเลขมีฟังก์ชันเทียบเท่ากับทศนิยม โดยปกติเมื่อฉันเห็นรอบคัดเลือก " หน้าที่เทียบเท่า" ก็หมายความว่าทั้งสองสิ่งที่ไม่ตรงเหมือนกัน แต่ที่พวกเขาเป็นสองประเภทต่าง ๆ ที่มีความแตกต่างจากด้านนอก ความหมายนี้เป็นจริงหรือไม่? มีความแตกต่างระหว่าง NUMERIC และ DECIMAL ที่เพิ่งเกิดขึ้นกับผู้สังเกตการณ์ภายนอกหรือไม่ หรือว่าเทียบเท่ากันจริง ๆเช่น NUMERIC เป็นเพียงคำพ้องความหมายดั้งเดิมสำหรับ DECIMAL หรือไม่
47 sql-server 

4
การทำคลัสเตอร์กับการจำลองแบบของทรานแซคชันกับกลุ่มความพร้อมใช้งาน
สมมติว่าคุณต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณที่ใช้ SQL Server 2012 เป็นแบ็กเอนด์ฐานข้อมูลของมันพร้อมใช้งานตลอดเวลาแม้ว่าเครื่องเซิร์ฟเวอร์หนึ่งเครื่องจะล้มเหลวก็ตาม ในฐานะนักพัฒนาซอฟต์แวร์และไม่ใช่ DBA ฉันกำลังพยายามเข้าใจว่าจะใช้เมื่อใดกับสถานการณ์ที่ล้มเหลว / มีความพร้อมใช้งานสูง: เซิร์ฟเวอร์สองตัว (หรือมากกว่า) ในคลัสเตอร์ Windows Failover, SQL Server เป็นอินสแตนซ์ของคลัสเตอร์ อินสแตนซ์ของ SQL Server สอง (หรือมากกว่า) ที่ได้รับการปรับปรุงด้วยการจำลองแบบของทรานแซคชัน เซิร์ฟเวอร์ SQL สองตัว (หรือมากกว่า) ใน SQL Server Availability Group ที่กำหนดค่าในโหมดการส่งข้อมูลแบบซิงโครนัส สถานการณ์ใดบ้างที่เหมาะกับภาระงานประเภทใดและสถานการณ์ความล้มเหลว / การหยุดทำงานประเภทใดที่สามารถจัดการได้ พวกเขายังเปรียบได้ / แลกเปลี่ยนได้?

3
เป็นไปได้หรือไม่ที่จะกำหนดรหัสผ่านสำหรับฐานข้อมูลหรือต่อโฮสต์ใน. my.cnf
ฉันมีดังต่อไปนี้ในของฉัน ~/.my.cnf [client] password="somepass" แต่นี่ไม่ใช่รหัสผ่านที่ฉันใช้สำหรับ user @ host / ฐานข้อมูลทุกตัวที่ฉันเชื่อมต่อ มีวิธีในการระบุรหัสผ่านที่แตกต่างกันสำหรับสิ่งที่แตกต่างกันดังนั้นฉันไม่ต้องพิมพ์รหัสผ่านหรือไม่?

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


8
ฉันจะลดขนาดไฟล์ทั้งหมดอย่างรวดเร็วสำหรับฐานข้อมูลทั้งหมดได้อย่างไร
ใน SQL Server (2008 ในกรณีนี้) ฉันจะย่อขนาดไฟล์ทั้งหมดอย่างรวดเร็วทั้งบันทึกและข้อมูลสำหรับฐานข้อมูลทั้งหมดในอินสแตนซ์ได้อย่างไร ฉันสามารถผ่าน SSMS และคลิกขวาแต่ละครั้งและเลือกงาน -> ลดขนาด แต่ฉันกำลังมองหาบางสิ่งที่เร็วขึ้น ฉันสคริปต์สคริปต์ "สร้างฐานข้อมูล" บางส่วนและลืมว่าพวกเขามีขนาดบอลลูนเป็นค่าเริ่มต้นและไม่ต้องการพื้นที่ที่สงวนไว้สำหรับไฟล์เหล่านี้ในโครงการนี้ค่อนข้างมาก

2
วันที่ส่งเป็นเรื่องง่าย แต่เป็นความคิดที่ดีใช่ไหม
ใน SQL Server 2008 มีการเพิ่มประเภทข้อมูลวันที่ การคัดเลือกdatetimeคอลัมน์เพื่อให้dateสามารถขายได้และสามารถใช้ดัชนีในdatetimeคอลัมน์ได้ select * from T where cast(DateTimeCol as date) = '20130101'; ตัวเลือกอื่นที่คุณมีคือใช้ช่วงแทน select * from T where DateTimeCol >= '20130101' and DateTimeCol < '20130102' คำถามเหล่านี้ดีพอ ๆ กันหรือควรเป็นคำถามที่ดีกว่า
47 sql-server 

3
วิธีการสร้างผลลัพธ์ sqlplus ปรากฏในหนึ่งบรรทัด?
ฉันมีตารางที่มี 100 คอลัมน์ เมื่อเลือกข้อมูลในSQL Pluswraps ผลลัพธ์ทำให้อ่านได้ยาก สิ่งที่ฉันต้องการคือแถบเลื่อนแนวนอนที่จะปรากฏหรือส่งผลลัพธ์ไป less ฉันเรียกใช้คำสั่งต่อไปนี้ใน SQLPlus - SET LINESIZE 32000; SET PAGESIZE 40000; SET LONG 50000; SPOOL output.txt SELECT * FROM big_table; จากนั้นในbashฉันวิ่ง - output.txt น้อยลง เอาต์พุตยังคงถูกห่อและไม่สามารถอ่านได้
46 oracle  sqlplus 

6
ไฟล์. bak ไม่ปรากฏในไดเรกทอรีใด ๆ ใน SSMS
ฉันมีไฟล์. bak ที่สร้างขึ้นในวันนี้โดยบุคคลอื่นซึ่งสร้างด้วยตนเองผ่าน SSMS 2008 R2 ฉันพยายามกู้คืนฐานข้อมูลด้วยตนเอง แต่น่าเสียดายที่ไฟล์ไม่ปรากฏขึ้นเมื่อฉันไปเรียกดู ฉันสามารถเขียนสคริปต์กระบวนการคืนค่าได้ แต่ฉันเคยเห็นปัญหานี้มาก่อนและฉันไม่แน่ใจว่าสิ่งใดที่อาจทำให้. bak ไม่ปรากฏ

2
วัตถุประสงค์ของฐานข้อมูล 'เจ้าของ' คืออะไร?
วันนี้ในขณะที่การแก้ไขปัญหานายหน้าบริการฉันค้นพบว่าเจ้าของฐานข้อมูลคือการเข้าสู่ระบบ Windows ของพนักงานที่ออกจาก บริษัท การเข้าสู่ระบบของเขาถูกลบและทำให้การแจ้งเตือนการค้นหาล้มเหลว แนวทางปฏิบัติที่ดีที่สุดในการจัดการกับสิ่งนี้คือการทำให้เจ้าของฐานข้อมูลเป็น เราเปลี่ยนและลบล้างคิว คำถาม (ระดับประถมศึกษา) ของฉัน: เจ้าของฐานข้อมูลคืออะไรและวัตถุประสงค์ของมันคืออะไร

6
หลังจากย้ายฐานข้อมูล (สำรองข้อมูลคืนค่า) ฉันต้องเพิ่มผู้ใช้อีกครั้ง
ฉันย้ายฐานข้อมูล (SQL Express 2012) เป็นครั้งคราวจากเครื่องพัฒนาไปยังเซิร์ฟเวอร์หรือในทางกลับกันโดยใช้การสำรองฐานข้อมูลและเรียกคืนใน SQL Server Management Studio เมื่อใดก็ตามที่ฉันทำสิ่งนี้แอปพลิเคชันบนเครื่องเป้าหมายไม่สามารถเข้าถึงฐานข้อมูลจนกว่าฉันจะลบผู้ใช้ที่ใช้ "george" จากผู้ใช้ฐานข้อมูล (ฐานข้อมูลความปลอดภัยผู้ใช้ใน SQL Server Management Studio) และเพิ่มเป็น เจ้าของภายใต้ความปลอดภัย, การเข้าสู่ระบบ, จอร์จ / คุณสมบัติ, การจับคู่ผู้ใช้ มีวิธีที่ดีกว่าในการทำเช่นนี้? ดูเหมือนจะสับสนเล็กน้อย

12
DBA จะเป็น 'โปรแกรมเมอร์ที่เป็นมิตร' มากขึ้นได้อย่างไร?
คำตอบและความคิดเห็นเกี่ยวกับรุ่น dba.seและprogrammers.se รุ่นของคำถาม"สิ่งที่ขัดแย้งกับหรือสำหรับการวางตรรกะของโปรแกรมประยุกต์ในชั้นฐานข้อมูลหรือไม่" มีการเปิดเผยเกี่ยวกับการแบ่งระหว่าง DBA และโปรแกรมเมอร์ในที่ทำงานบางแห่ง DBA ทำอะไรได้บ้างเพื่อให้ทำงานได้ดีขึ้นกับโปรแกรมเมอร์ในประเด็นเช่นนี้ เราควร: ศึกษาเครื่องมือและภาษาที่โปรแกรมเมอร์ของเราใช้เพื่อทำความเข้าใจปัญหาที่พวกเขาเผชิญโดยเฉพาะเมื่อทำงานกับฐานข้อมูลที่ออกแบบมาอย่างดี? ส่งเสริมให้โปรแกรมเมอร์ให้ความรู้เกี่ยวกับฐานข้อมูลและข้อดีของการมีตรรกะทางธุรกิจในระดับฐานข้อมูลดีขึ้นหรือไม่ เปลี่ยนวิธีที่เรากำหนดอินเทอร์เฟซให้กับข้อมูลของเรา - เช่นโดยใช้ API การทำธุรกรรมที่เป็นมิตรกับโปรแกรมเมอร์มากขึ้น (เช่นสำหรับปัญหาเช่นความเข้ากันได้ย้อนหลัง)?

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