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

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

3
ขนาดฐานข้อมูล - MDF ใหญ่เกินไป?
ฉันกำลังบำรุงรักษาฐานข้อมูล SQL Server 2005 ซึ่งโฮสต์ประมาณ 2.9Tb ของข้อมูล (2 x 1.45Tb - ฉันมี schema RAW และ schema การวิเคราะห์ดังนั้นโดยทั่วไปแล้วสองชุดของข้อมูลที่ติดเครื่อง) รูปแบบการกู้คืนง่ายและ.ldfอยู่ที่ 6Gb ไม่ว่าจะด้วยเหตุผลใดก็ตาม.mdfคือ 7.5Tb ตอนนี้อาจมีคอลัมน์เพิ่มเติมเพียง 2-3 คอลัมน์ในตารางวิเคราะห์และมีNVARCHAR(MAX)คอลัมน์ไม่มากซึ่งจากสิ่งที่ฉัน (อาจเข้าใจผิด - โปรดแก้ไขให้ถูกต้องถ้าฉันผิด) อาจทำให้เกิดการจัดสรรพื้นที่เพิ่มเติม หลังจากหดฐานข้อมูลตอนนี้ - มันอยู่ที่ ~ 9Tb ก่อนหน้านั้น ความคิดใด ๆ และโปรดแจ้งให้เราทราบหากคุณมีคำถามเพิ่มเติม - ฉันยังใหม่ต่อการดูแลฐานข้อมูลและการเพิ่มประสิทธิภาพ (โดยปกติฉันจะไม่ทำงานด้านนี้ :)) ขอบคุณมาก! Andrija


4
จะรักษาตัวนับที่ไม่ซ้ำกันต่อแถวด้วย PostgreSQL ได้อย่างไร
ฉันต้องการเก็บหมายเลขการแก้ไข (ต่อแถว) ที่ไม่ซ้ำกันในตาราง document_revisions ซึ่งหมายเลขการแก้ไขถูกกำหนดขอบเขตไว้ที่เอกสารดังนั้นจึงไม่ซ้ำกันกับทั้งตารางเฉพาะกับเอกสารที่เกี่ยวข้อง ตอนแรกฉันคิดเรื่อง: current_rev = SELECT MAX(rev) FROM document_revisions WHERE document_id = 123; INSERT INTO document_revisions(rev) VALUES(current_rev + 1); แต่มีสภาพการแข่งขัน! ฉันพยายามที่จะแก้ปัญหาด้วยpg_advisory_lockแต่เอกสารนั้นค่อนข้างหายากและฉันก็ไม่เข้าใจอย่างเต็มที่และฉันไม่ต้องการล็อคบางอย่างโดยไม่ได้ตั้งใจ ต่อไปนี้เป็นที่ยอมรับหรือฉันทำผิดหรือมีวิธีแก้ปัญหาที่ดีกว่า SELECT pg_advisory_lock(123); current_rev = SELECT MAX(rev) FROM document_revisions WHERE document_id = 123; INSERT INTO document_revisions(rev) VALUES(current_rev + 1); SELECT pg_advisory_unlock(123); ฉันไม่ควรล็อคแถวเอกสาร (key1) สำหรับการดำเนินการที่กำหนด (key2) แทนหรือไม่ …

1
วิธีปฏิบัติที่ดีที่สุดสำหรับการจัดเก็บข้อมูลเมตาของระเบียน
แนวปฏิบัติที่ดีที่สุดสำหรับการจัดเก็บข้อมูลเมตาของแต่ละระเบียนในฐานข้อมูลคืออะไร ฉันต้องการจัดเก็บข้อมูลเมตาทั่วไปเช่นเวลาสร้างและเวลาของการอัปเดตครั้งล่าสุดสำหรับตารางจำนวนมากในฐานข้อมูลของฉัน ฉันพบวิธีแก้ไขปัญหาต่าง ๆ : เก็บข้อมูลเมตาโดยตรงในตาราง ข้อดี: ข้อมูล Meta เชื่อมโยงโดยตรงกับบันทึก ไม่จำเป็นต้องใช้ตัวเชื่อมเพื่อดึงข้อมูลเมตา จุดด้อย: จำเป็นต้องใช้คอลัมน์ที่ซ้ำกันจำนวนมาก (เว้นแต่จะใช้การสืบทอด) ข้อมูล Meta และข้อมูลธุรกิจจะไม่แยกออกจากกัน สร้างตารางข้อมูลเมตาทั่วไปด้วยและใช้ซอฟต์คีย์ต่างประเทศเพื่อลิงค์ข้อมูลไปยังตารางและเรกคอร์ดที่ถูกต้อง ข้อดี: ไม่มีการทำซ้ำคอลัมน์ ข้อมูล Meta ถูกแยกออกจากข้อมูลธุรกิจ จุดด้อย: ไม่มีลิงก์โดยตรงระหว่างข้อมูลเมตาและข้อมูล (ไม่สามารถใช้ FK ได้) เข้าร่วมต้องมีเงื่อนไขเพิ่มเติม สร้างตารางข้อมูลเมตาแต่ละตารางสำหรับแต่ละตารางที่ต้องการข้อมูลเมตา ข้อดี: ข้อมูล Meta เชื่อมโยงโดยตรงกับบันทึก ข้อมูล Meta ถูกแยกออกจากข้อมูลธุรกิจ จุดด้อย: ต้องใช้ตารางเสริมจำนวนมาก จำเป็นต้องใช้คอลัมน์ที่ซ้ำกันจำนวนมาก (เว้นแต่จะใช้การสืบทอด) มีตัวเลือกข้อดีหรือข้อเสียมากกว่าตัวเลือกที่ฉันพูดถึงที่นี่หรือไม่? และวิธีปฏิบัติที่ดีที่สุดในการจัดเก็บข้อมูลเมตานี้คืออะไร

2
ฉันสามารถติดตั้ง SQL Server 2012 บนเครื่องที่มี 2008 R2 แล้วได้หรือไม่?
ฉันใช้ SQL Server 2008 R2 มาระยะหนึ่งแล้วมันใช้งานได้ดีมาก ตอนนี้ฉันต้องใช้ SQL Server 2012 จะมีผลกับฐานข้อมูลที่มีอยู่ของฉันหรือไม่ ความเสี่ยงในการติดตั้ง SQL Server 2012 บนเครื่องที่ SQL Server 2008 R2 มีความเสี่ยงมากแค่ไหน?

2
แปลงหน่วยของการวัด
กำลังมองหาการคำนวณหน่วยการวัดที่เหมาะสมที่สุดสำหรับรายการของสารที่ให้สารในปริมาณหน่วยที่แตกต่างกัน (แต่เข้ากันได้) ตารางการแปลงหน่วย ตารางแปลงหน่วยจัดเก็บหน่วยต่าง ๆ และความเกี่ยวข้องของหน่วยเหล่านั้น: id unit coefficient parent_id 36 "microlitre" 0.0000000010000000000000000 37 37 "millilitre" 0.0000010000000000000000000 5 5 "centilitre" 0.0000100000000000000000000 18 18 "decilitre" 0.0001000000000000000000000 34 34 "litre" 0.0010000000000000000000000 19 19 "dekalitre" 0.0100000000000000000000000 29 29 "hectolitre" 0.1000000000000000000000000 33 33 "kilolitre" 1.0000000000000000000000000 35 35 "megalitre" 1000.0000000000000000000000 0 การเรียงลำดับตามค่าสัมประสิทธิ์แสดงให้เห็นว่าการparent_idเชื่อมโยงหน่วยรองกับตัวเลขที่เหนือกว่า ตารางนี้สามารถสร้างได้ใน PostgreSQL โดยใช้: …

2
ต้องได้รับอนุญาตก่อนเพื่อดูไดอะแกรมฐานข้อมูล
ฉันเพิ่งตั้งค่า SSDT เพื่อให้นักพัฒนาของเราใช้ เราบังคับใช้การเปลี่ยนแปลงฐานข้อมูล dev ของเราทำผ่าน SSDT โดย จำกัด สิทธิ์ที่นักพัฒนาแต่ละคนมีเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ (db_datareader, db_datawriter) ภายใน SSDT เราเผยแพร่การเปลี่ยนแปลงของเราไปยังฐานข้อมูลโดยใช้สคริปต์การปรับใช้ซึ่งเชื่อมต่อโดยใช้การเข้าสู่ระบบด้วยสิทธิ์ระดับสูง คำถามของฉัน. เนื่องจากเราได้ใช้ความยาวนี้เพื่อล็อกฐานข้อมูล (เพื่อหยุดการเลื่อนสคีมา); มีวิธีใดบ้างที่นักพัฒนาสามารถดูไดอะแกรมในฐานข้อมูลนี้โดยไม่ต้องมีสิทธิ์ db_owner? ฉันรู้ว่านักพัฒนาซอฟต์แวร์แต่ละคนสามารถสร้างและดูไดอะแกรมของเขาหรือเธอได้ แต่ฉันต้องการให้พวกเขาสามารถดูไดอะแกรมทั้งหมดที่สร้างขึ้นโดยนักพัฒนาหลายคน ฉันไม่คิดว่ามันจะช่วยได้ แต่เรากำลังเรียกใช้ sql server 2012 ความช่วยเหลือใด ๆ จะได้รับอย่างมาก

3
คอลัมน์ nullable สองคอลัมน์จำเป็นต้องมีค่า
คำถามที่ไม่มีคำอธิบาย: อย่างไรก็ตามมีข้อ จำกัด ของค่า Null 2 ​​ค่าที่ต้องมีค่า 1 เสมอหรือไม่ ตัวอย่างเช่นสองคอลัมน์วันที่ทั้งเป็นโมฆะ แต่มีอย่างน้อย 1 ที่ต้องมีค่า คำอธิบายปัญหา: สมมติว่าฉันมีตารางที่เรียกว่าค่าใช้จ่าย และมี 2 วัน: prevision_expense_expiration_date DATE NULLABLE ค่าใช้จ่าย _payment_date DATE NULLABLE ตรรกะของคอลัมน์ 2 คอลัมน์ดังต่อไปนี้: ฉันซื้อของบางอย่างและฉันรู้ว่าฉันต้องจ่ายเงินสำหรับบางวันเช่นค่าโทรศัพท์ ฉันจะป้อนสิ่งนี้เป็นค่าใช้จ่ายโดยมี costs_payment_date วันนี้เป็นวันที่ควรจะจ่าย แต่ไม่ใช่วันที่จ่ายจริงเช่นวันหมดอายุของใบแจ้งหนี้ ในสถานการณ์อื่น ๆ ฉันขายบัตรของขวัญของผู้ให้บริการบางรายเพื่อให้บริการ ฉันอาจมีค่าใช้จ่ายในการซื้อให้กับผู้ให้บริการของฉันบริการโอนไปยังลูกค้าของฉันเฉพาะในกรณีที่ลูกค้าแลกบัตร ดังนั้นบัตรของขวัญจึงมีวันหมดอายุฉันต้องการทำเช่นนั้นสำหรับ 'ค่าใช้จ่าย' โดยไม่ต้องใส่เป็นค่าใช้จ่ายสำหรับเวลาที่บัตรของขวัญนั้นถูกต้องหากบัตรของขวัญหมดอายุ 'ค่าใช้จ่าย' นั้นไม่ควรเข้าบัญชี ระบบ. ฉันรู้ว่าฉันสามารถมี 2 ตารางเท่า ๆ กันที่เรียกว่า prevision_expense และ …

2
วิธีกำหนดค่า SSRS (SQL Server 2012) ให้ทำงานบนอินสแตนซ์อื่น แต่เซิร์ฟเวอร์เดียวกับ SharePoint
ฉันมีอินสแตนซ์ของ SQL Server 2012 ที่ทำงานบน Windows 2008R2 ข้างๆอินสแตนซ์อื่นของ SQL Server 2012 ที่ใช้งาน SharePoint (ฉันคิดว่าเป็น SharePoint 2010) เมื่อฉันพยายามเข้าถึงสิ่งที่http://localhost/Reports_<InstanceName>ฉันได้รับ: คำเตือนใบรับรอง (ซึ่งฉันดำเนินการผ่าน - ฉันไม่ได้สนใจเรื่องนี้มากนัก - เป็นเครื่องพัฒนา) ข้อความต่อไปนี้: Cannot connect to the configuration database. Google กล่าวว่าข้อความแสดงข้อผิดพลาดนั้นเกี่ยวข้องกับ SharePoint ดังนั้นฉันจึงคิดว่า SharePoint กำลังทำงานอย่างหนักกับคำขอ SSRS มีการกำหนดค่าที่ฉันสามารถทำกับ SSRS หรืออย่างอื่น (IIS อาจ ??) ที่จะให้ฉันเข้าถึงเซิร์ฟเวอร์รายงานหรือไม่ หมายเหตุ : ฉันสามารถเชื่อมต่อกับบริการรายงานผ่าน SSMS ได้ดี

3
ความไม่สอดคล้องกันในการอ่านซ้ำ
http://www.postgresql.org/docs/9.2/static/transaction-iso.html โหมดการอ่านซ้ำจะให้การรับประกันอย่างเข้มงวดว่าแต่ละธุรกรรมจะเห็นมุมมองที่สมบูรณ์ของฐานข้อมูล อย่างไรก็ตามมุมมองนี้จะไม่จำเป็นต้องสอดคล้องกับการดำเนินการอนุกรม (ทีละครั้ง) เสมอของการทำธุรกรรมที่เกิดขึ้นพร้อมกันในระดับเดียวกัน ตัวอย่างเช่นแม้แต่ธุรกรรมแบบอ่านอย่างเดียวในระดับนี้อาจเห็นระเบียนควบคุมที่อัปเดตเพื่อแสดงว่าแบทช์เสร็จสมบูรณ์แล้ว แต่ไม่เห็นหนึ่งในบันทึกรายละเอียดซึ่งเป็นส่วนหนึ่งในเชิงตรรกะของแบทช์เพราะอ่านการแก้ไขเรคคอร์ดควบคุมก่อนหน้านี้ . ความพยายามในการบังคับใช้กฎเกณฑ์ทางธุรกิจโดยธุรกรรมที่ทำงานในระดับการแยกนี้ไม่น่าจะทำงานได้อย่างถูกต้องโดยไม่ต้องใช้การล็อคอย่างชัดเจนเพื่อป้องกันการทำธุรกรรมที่ขัดแย้งกัน นั่นไม่ใช่ phantom read ซึ่งเป็นไปไม่ได้ในโหมดอ่านซ้ำ เอกสารระบุว่าแบบสอบถามในธุรกรรมอ่านซ้ำสามารถดูสแน็ปช็อตเมื่อเริ่มต้นธุรกรรมจากนั้นจึงเป็นไปได้อย่างไรที่แบบสอบถามจะอ่านข้อมูลที่ไม่สอดคล้องกัน

5
แบบสอบถามโดยไม่ต้องระบุสคีมาของตาราง
ฉันนำเข้าตารางจาก SQL Server 2000 ไปยังฐานข้อมูล 2008 ของฉัน erpadmin.tablenameทุกตารางที่นำเข้าจะมีคำนำหน้าชื่อผู้ใช้ของฉันเช่น: ในคุณสมบัติตารางจะแสดงรายการ 'erpadmin' เป็น db schema เมื่อฉันเขียนแบบสอบถามตอนนี้ฉันต้องรวม 'erpadmin' ต่อหน้าชื่อตารางทั้งหมดซึ่งทำให้เกิดความสับสน ผลลัพธ์ปัจจุบัน: select * from erpadmin.tablename ผลลัพธ์ที่ต้องการ: select * from tablename

3
ฉันจะตรวจสอบว่ามีการ จำกัด ขนาด Express Edition ได้อย่างไร
ฉันสับสน. AFAIK SQL Server 2005 Express มีขีด จำกัด ของความจุ 4GB ฐานข้อมูล ข้อมูลขนาด อย่างไรก็ตามฉันมีผลลัพธ์ต่อไปนี้จากsp_spaceused: ฉันจะตรวจสอบว่า DB ของฉันมีขนาดเกินขีด จำกัด ได้อย่างไร? พื้นที่ที่ไม่ได้ปันส่วนเป็นจำนวนที่มากspace leftจนเกินขีด จำกัด หรือไม่? ฉันเหลือพื้นที่เท่าไหร่ ไม่index_sizeนับรวมในขีด จำกัด ?

5
การติดตั้ง SQL Server RAID 10 กับ RAID 5
ฉันใหม่เพื่อตั้งค่าเซิร์ฟเวอร์ SQL และ Vms บรรพบุรุษของฉันใช้ Raid 5 สำหรับ C Drive ซึ่งมีการติดตั้ง SQL และ RAID 10 สำหรับไฟล์ฐานข้อมูลและบันทึกฐานข้อมูล ฉันสงสัยว่ามันถูกต้องหรือควรใช้ RAID 5 สำหรับไฟล์ฐานข้อมูล SQL แทนหรือไม่ ความช่วยเหลือใด ๆ

3
สถิติของ SQL Server ถูกเก็บไว้ในฐานข้อมูลหรือบัฟเฟอร์พูลหรือไม่?
แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่

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

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