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

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

1
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนสคีมาและการย้ายข้อมูลไปยังฐานข้อมูลสดโดยไม่ต้องหยุดทำงาน
คุณทำการเปลี่ยนแปลง schema กับฐานข้อมูลจริงโดยไม่ต้องหยุดทำงานได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันมีฐานข้อมูล PostgreSQL พร้อมตารางรวมถึงข้อมูลผู้ใช้ที่หลากหลายเช่นที่อยู่อีเมล ฯลฯ ทั้งหมดที่เกี่ยวข้องกับผู้ใช้เฉพาะ หากฉันต้องการย้ายที่อยู่อีเมลไปยังตารางเฉพาะใหม่ฉันต้องเปลี่ยนสคีมาแล้วย้ายข้อมูลอีเมลไปยังตารางใหม่ วิธีนี้สามารถทำได้โดยไม่หยุดเขียนไปยังตารางต้นฉบับ? แน่นอนว่าในขณะที่ข้อมูลถูกเขียนทับจากตารางเก่าไปยังตารางใหม่ข้อมูลใหม่จะถูกเขียนลงในตารางเดิมต่อไปและจะพลาดใช่ไหม ฉันเดาว่าปัญหานี้เกิดขึ้นค่อนข้างบ่อย แต่ฉันไม่สามารถหาวิธีแก้ปัญหามาตรฐานใด ๆ สำหรับจัดการกับมัน บทความนี้เกี่ยวกับปัญหา แต่ฉันไม่เข้าใจขั้นตอนที่ 3 เขาบอกว่าเขียนไปยังทั้งสองตารางจากนั้นย้ายข้อมูลเก่าจากตารางแรกไปยังตารางใหม่ คุณแน่ใจได้อย่างไรว่าคุณเพียงแค่ย้ายข้อมูลเก่าเท่านั้น (ฉันใช้PostgreSQL กับ Heroku )

5
เมื่อใดที่ตกลงเพื่อลดขนาดฐานข้อมูล
ฉันรู้ว่าหดตัวเป็นปีศาจ: มันกลับคำสั่งหน้าและรับผิดชอบต่อโรคมะเร็งผิวหนัง, การกระจายตัวของข้อมูลและภาวะโลกร้อน รายการไปที่ ... ที่กล่าวว่าฉันมีฐานข้อมูล 100 GB และฉันลบข้อมูล 50 GB - ไม่ได้อยู่ในตารางเดียว แต่ pruning ทั่วไปของข้อมูลเก่าในระดับกว้างฐานข้อมูลครอบคลุม 90% ของ ตาราง - นี่เป็นกรณีการใช้งานที่เหมาะสมสำหรับลดขนาดฐานข้อมูลหรือไม่? หากไม่เป็นเช่นนั้นขั้นตอนที่เหมาะสมในการทำความสะอาดบ้านหลังจากลบข้อมูลที่มีเปอร์เซ็นต์สูงจากฐานข้อมูลคืออะไร ฉันสามารถนึกถึงสอง: สร้างดัชนีและอัปเดตสถิติใหม่ มีอะไรอีกบ้าง?

5
แผนการบำรุงรักษาเซิร์ฟเวอร์ SQL - วิธีปฏิบัติที่ดีที่สุดสำหรับงานและการกำหนดตารางเวลา
ฉันได้รับมอบหมายให้วางแผนการบำรุงรักษาสำหรับฐานข้อมูล SQL Server 2005 ของเรา ฉันรู้ว่าสำหรับการสำรองข้อมูลฉันต้องการสำรองข้อมูลฐานข้อมูลเต็มรูปแบบทุกวันและสำรองข้อมูลบันทึกธุรกรรมทุก 15 นาที ปัญหาของฉันมาเพื่อหางานอื่นที่ฉันต้องการทำและความถี่ที่ฉันควรทำ ดังนั้นฉันจึงมีสิ่งนี้อยู่ในใจ แก้ไขฉันหากมีข้อบกพร่องใด ๆ ในความคิดของฉันหรือวิธีที่ดีกว่าในการทำเช่นนี้ สำรองข้อมูล - ตารางทั้งหมดสำรองข้อมูลเต็มรูปแบบ (รายวัน) สำรองข้อมูล - ตารางที่เลือก, สำรองข้อมูลเต็มรูปแบบ (รายชั่วโมง) สำรองข้อมูล - บันทึกธุรกรรม (ทุก 15 นาที) ตรวจสอบความสมบูรณ์ของฐานข้อมูล (รายวัน) จัดระเบียบดัชนีใหม่ (ทุกวัน) อัปเดตสถิติ (ทุกวัน) ย่อขนาดฐานข้อมูล (รายสัปดาห์) สร้างดัชนีใหม่ (ทุกสัปดาห์) การบำรุงรักษาล้าง (ทุกวัน) ฉันจำได้ว่าเคยอ่านเมื่อไม่นานมานี้ (เมื่อฉันตั้งค่าแผนคล้ายกันที่งานอื่น) ว่างานเหล่านี้บางอย่างไม่จำเป็นต้องทำงานทุกวันหรือไม่ควรทำงานทุกวัน เป็นคนที่มันหนีฉัน ฉันสามารถใช้แนวทางเล็กน้อยในการสร้างแผนการบำรุงรักษาที่ดีขึ้นซึ่งจะลดการสูญเสียข้อมูลในภัยพิบัติ แต่จะไม่เก็บภาษีระบบเมื่อทำงานในช่วงเวลาเร่งด่วน (และเพิ่มประสิทธิภาพ)

9
มีเครื่องมือเช่น "SQL Server Profiler" ของ Microsoft สำหรับ MySQL หรือไม่? [ปิด]
ในขณะที่พัฒนาบน MySQL ฉันพลาดที่จะสามารถสร้างโปรไฟล์ได้ ฉันพบว่าSQLyogเป็นตัวแทนที่ที่ดีสำหรับ Query Analyzer แต่ไม่พบเครื่องมือที่ทำงานเช่น SQL profiler สำหรับชาว MySQL ที่ไม่ได้เห็นSQL Profilerของ Microsoft นี่เป็นภาพหน้าจอ ที่งานก่อนหน้าของฉันเรามีเครื่องมือที่trumped SQL Profilerและทำให้เรามีร่องรอยสแต็ก ไม่มีใครรู้ว่าเครื่องมือใด ๆ เช่นเดียวกับที่ฉันกล่าวถึงที่ทำงานร่วมกับ MySQL (FYI ฉันสามารถให้ Altiris Profiler ทำงานกับ MySQL ได้ แต่จะเกี่ยวข้องกับการใช้งาน Windows และไม่ใช่ Symantec sku ดังนั้นการออกใบอนุญาตจึงยุ่งยากมาก)
43 mysql  profiler  tools 

2
MySQL: วิธีตรวจสอบกุญแจต่างประเทศที่เกี่ยวข้องกับตาราง
จะเห็นกุญแจต่างประเทศที่เกี่ยวข้องกับตารางใน MySql ได้อย่างไร? แบ็คกราวน์ : ฉันต้องการวางตารางใน MySql ซึ่งมีข้อ จำกัด รหัสต่างประเทศ เมื่อฉันทำฉันได้รับสิ่งนี้: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails ฉันจะวางกุญแจต่างประเทศที่เกี่ยวข้องกับตารางจากผู้อื่นได้อย่างไร

3
search_path สำหรับฐานข้อมูลและผู้ใช้ที่กำหนดคืออะไร
ฉันสามารถดูปัจจุบันsearch_pathด้วย: show search_path ; และฉันสามารถตั้งค่าsearch_pathสำหรับเซสชันปัจจุบันด้วย: set search_path = "$user", public, postgis; เช่นเดียวกับผมอย่างถาวรสามารถตั้งค่าsearch_pathเพื่อให้ฐานข้อมูลด้วย: alter database mydb set search_path = "$user", public, postgis ; และฉันสามารถตั้งค่าsearch_pathสำหรับบทบาทที่กำหนด(ผู้ใช้) อย่างถาวรด้วย: alter role johnny set search_path = "$user", public, postgis ; แต่ฉันต้องการทราบวิธีการตรวจสอบว่าการตั้งค่าฐานข้อมูลและบทบาทคืออะไร (เกี่ยวกับsearch_path) ก่อนที่จะทำการเปลี่ยนแปลง

2
ทำสถิติการอัพเดตดัชนีใหม่หรือไม่?
ฉันได้ทำหลักสูตร MS10775A เมื่อสัปดาห์ที่แล้วและมีคำถามหนึ่งข้อที่ผู้ฝึกสอนไม่สามารถตอบได้อย่างน่าเชื่อถือคือ: ดัชนีใหม่อัปเดตสถิติหรือไม่ เราพบว่าการสนทนาออนไลน์โต้เถียงทั้งที่เป็นอยู่และไม่เป็นเช่นนั้น

5
การทำให้ข้อมูลสับสนใน SQL Server
แนวปฏิบัติที่ดีที่สุดสำหรับ Data Obfuscation ใน SQL Server คืออะไร เราต้องการใช้ข้อมูลการผลิตแบบสวมหน้ากากในระบบเอือดของเรา ถ้าเราต้องการที่จะทำมันอย่างรวดเร็วและด้วยระดับ obsfucation ที่สูงขึ้นวิธีการที่ควรจะนำมา? ฉันกำลังคิดเกี่ยวกับการแย่งชิงตัวละครสำหรับชื่อและนามสกุลของผู้คน แต่อย่างไร ฉันควรสร้างฟังก์ชั่นด้วยตัวเองหรือมีฟังก์ชั่นที่กำหนดไว้ล่วงหน้าให้ใช้งานหรือไม่? ฉันไม่ต้องการใช้เวลาคิดค้นวงล้อใหม่ :) แล้วฟิลด์วันที่ล่ะ? ตัวอย่างเช่นควรเลือกวันเดือนปีเกิดแบบสุ่มจากตารางทั้งหมดและมอบหมายให้บันทึกหรือมีวิธีที่ดีกว่าในการทำเช่นนั้น?

3
ฉันจะดูการกำหนดค่าจดหมายฐานข้อมูลปัจจุบันได้อย่างไร
อินสแตนซ์ SQL Server (2008) ของเราได้รับการกำหนดค่าให้ส่งเมลและทุกอย่างทำงานได้อย่างถูกต้อง แต่ฉันไม่สามารถหาวิธีดูการกำหนดค่าที่มีอยู่โดยเฉพาะเซิร์ฟเวอร์ SMTP จาก SSMS ฉันสามารถเริ่มต้นตัวช่วยสร้างการกำหนดค่าได้เท่านั้นและฉันไม่พบอะไรออนไลน์ - มีข้อมูลมากมายเกี่ยวกับวิธีการตั้งค่า แต่ไม่มีวิธีการดูการตั้งค่าปัจจุบัน ฉันจะดูการตั้งค่าที่มีอยู่ได้อย่างไร

2
เมื่อต้องการอัปเดตสถิติ
ฉันได้รับแผนการบำรุงรักษาที่ได้รับสิ่งต่อไปนี้: ล้างข้อมูลเก่า ตรวจสอบความสมบูรณ์ของฐานข้อมูล ดำเนินการสำรองฐานข้อมูลและบันทึกธุรกรรม จัดระเบียบดัชนีของเราใหม่ อัพเดทสถิติ ลบการสำรองข้อมูลเก่าและไฟล์ Maintenance Plan จากแผนการบำรุงรักษา 23 นาทีการอัปเดตสถิติใช้เวลา 13 นาที ในช่วงเวลา 13 นาทีนี้การเข้าถึงฐานข้อมูลถูกปิดกั้น (หรืออย่างน้อยการจำลองแบบจากฐานข้อมูลนี้ไปยังผู้อื่นของเราจะถูกหยุดชั่วคราว) คำถามของฉันคือ: เราควรอัปเดตสถิติเมื่อใดและเพราะเหตุใด ดูเหมือนว่าสิ่งที่เราควรทำน้อยกว่าทุกวัน ฉันพยายามที่จะพาเราออกจาก "เพียงเพราะ" ความตั้งใจของการบำรุงรักษาที่ไม่จำเป็น

4
แพ็คเกจการสื่อสารเพื่ออ่านข้อผิดพลาดของ MySQL
ในบันทึกข้อผิดพลาด MySQL ฉันเห็นคำเตือนเล็กน้อยเหล่านี้: 120611 16:12:30 [Warning] Aborted connection 2619503 to db: 'db_name' user: 'user_name' host: 'webapp_hostname' (Got an error reading communication packets) ไม่ได้สังเกตเห็นการสูญเสียข้อมูลใด ๆ ต่อฉันดังนั้นฉันสงสัยว่าคำเตือนนี้หมายถึงอะไรหรือสิ่งที่ทำให้มันและถ้าใครอาจแก้ไขปัญหาที่ก่อให้เกิดเหล่านี้ นี่คือ RHEL 6.1 และ MySQL Enterprise 5.5
42 mysql  mysql-5.5 

5
ซ้อนกันดูการออกแบบฐานข้อมูลที่ดี?
ฉันได้อ่านนานมาแล้ว หนังสือระบุว่าเราไม่ควรอนุญาตให้มีมุมมองแบบซ้อนใน SQL Server ฉันไม่แน่ใจว่าทำไมเราไม่สามารถทำเช่นนั้นหรือฉันอาจจำคำสั่งที่ไม่ถูกต้อง นักเรียน SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 ครู SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = …

5
วิธีออกแบบฐานข้อมูลสำหรับจัดเก็บรายการที่เรียงลำดับ?
ฉันต้องการจัดเก็บรายการที่เรียงลำดับไว้ในฐานข้อมูล ฉันต้องการดำเนินการต่อไปนี้อย่างมีประสิทธิภาพ Insert (x) - แทรก record x ลงในตาราง ลบ (x) - ลบบันทึก x จากตาราง ก่อนหน้า (x, n) - ส่งคืนระเบียน 'n' ก่อนหน้าระเบียน x ในรายการที่เรียงลำดับ หลังจาก (x, n) - ส่งคืนระเบียน 'n' ที่ประสบความสำเร็จในการบันทึก x ในรายการที่เรียงลำดับ First (n) - ส่งคืนระเบียน 'n' แรกจากรายการที่เรียงลำดับ Last (n) - ส่งคืนระเบียน 'n' ล่าสุดจากรายการที่เรียงลำดับ เปรียบเทียบ (x, y) - ให้สองเรคคอร์ด …

7
เหตุใดฉันจึงควรใช้ Visual Studio 2010 บน SSMS สำหรับการพัฒนาฐานข้อมูลของฉัน
Visual Studio 2010 ขอแนะนำโครงการฐานข้อมูลและฟีเจอร์ที่เกี่ยวข้องทั้งหมดซึ่งช่วยในการพัฒนาฐานข้อมูล ฉันใช้ SQL Server Management Studio (SSMS) หลายปีในการพัฒนาฐานข้อมูลโดยไม่มีปัญหา ทำไมฉันต้องรำคาญกับ VS2010 เมื่อ SSMS เหมาะกับฉัน มันทำอะไรได้ดีกว่า SSMS โดยเฉพาะ? แต่บางทีหลักฐานของฉันไม่ถูกต้องและ SSMS ยังคงสำคัญกว่า VS สำหรับการพัฒนาฐานข้อมูล ถ้าเป็นเช่นนั้นจริงอยู่ในทางใด?

6
SSD กับ HDD สำหรับฐานข้อมูล
ฉันกำลังพยายามซื้อเซิร์ฟเวอร์ใหม่เพื่อเรียกใช้เซิร์ฟเวอร์ MySQL บน เซิร์ฟเวอร์ใหม่นี้จะเป็นทาสของเครื่องหลักของฉัน อย่างไรก็ตามเซิร์ฟเวอร์นี้จะใช้สำหรับการรายงานเท่านั้น "จำนวนมากอ่านและแบบสอบถามที่ซับซ้อน" ตอนนี้ฉันกำลังมองหาการลงทุนในฮาร์ดไดรฟ์โซลิดสเตต แต่ก็สงสัยว่ามันคุ้มค่าหรือไม่ ความแตกต่างระหว่าง SSD และฮาร์ดไดรฟ์ SATA 7200 อยู่ที่ประมาณ $ 1,500 และ SSD นั้นมีพื้นที่ดิสก์น้อยกว่า ถ้าฉันลงทุนกับ SSD จะเห็นความเร็วได้หรือไม่ ฉันสามารถซื้อ 4 (500GB SATA 7200) ในราคา $ 1,500 น้อยกว่าการซื้อ 2 (500GB SSD) คุณช่วยฉันในการตัดสินใจดูว่ามันคุ้มค่ากับการอัพเกรดหรือไม่? อีกสิ่งที่ฉันอยากจะพูดถึงคือฉันไม่ได้ใช้query_cacheดังนั้นจะมีจำนวนมากอ่านดิสก์ เซิร์ฟเวอร์นี้จะมี RAM 32GB และจะใช้งาน Ubuntu 12.04
42 mysql  ssd 

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