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

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

6
รายการตรวจสอบ SQL Server
การติดตามจากคำถามอื่นของฉันฉันต้องการเริ่มคิดเกี่ยวกับสิ่งที่ฉันควรดูในฐานรายวัน / รายสัปดาห์ / รายเดือนในแง่ของการแจ้งเตือน ฉันหวังว่าจะสามารถเห็นปัญหามาก่อนที่จะเกิดขึ้น (นั่นคือแผน) ... จนถึงตอนนี้ฉันได้เริ่มเก็บสคริปต์สำหรับต่อไปนี้ (ไม่มีคำสั่ง): ประจำวัน ตรวจสอบความพร้อมของระบบ (ในกรณีที่ฉันต้องตรวจสอบอะไรเป็น DBA) ตรวจสอบข้อมูลสำรองล่าสุด ตรวจสอบการสำรองข้อมูลบันทึกธุรกรรม ตรวจสอบสถานะของงาน SQL ตรวจสอบการใช้งาน CPU โดยเฉลี่ยในช่วง 24 ชั่วโมงที่ผ่านมา (หรือ 1140 นาที) รายสัปดาห์ ตรวจสอบประวัติการสำรองข้อมูลของ MSDB ตรวจสอบเพื่อดูว่าเมื่อครั้งที่ CheckDB ทำงานครั้งสุดท้าย ตรวจสอบดัชนีการแตกแฟรกเมนต์ ตรวจสอบสถิติดัชนี (อ่าน vs เขียน ฯลฯ ) ตรวจสอบคอขวด IO รายเดือน ตรวจสอบดัชนีที่ขาดหายไป ตรวจสอบดัชนีที่ไม่ได้ใช้อีกต่อไป ข้อเสนอแนะอื่น ๆ ? (ฉันใหม่กับ DBA ดังนั้นยินดีให้ความช่วยเหลือ …

3
ฉันจะให้ SQL Server ส่งอีเมลรายละเอียดข้อผิดพลาดให้ฉันเมื่องานล้มเหลวได้อย่างไร
SQL Server ช่วยให้คุณกำหนดค่างานเพื่อส่งการแจ้งเตือนทางอีเมลเมื่อล้มเหลว นี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการตรวจสอบงานของคุณ อย่างไรก็ตามการแจ้งเตือนเหล่านี้จะไม่รวมถึงรายละเอียดใด ๆ - เพียงแค่แจ้งความสำเร็จหรือความล้มเหลว หากงานล้มเหลวนี่คือลักษณะของอีเมลเตือนทั่วไป: JOB RUN: 'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM DURATION: 0 hours, 0 minutes, 0 seconds STATUS: Failed MESSAGES: The job failed. The Job was invoked by Schedule 2 (Nightly Before Backup 12AM). The last step …

4
NULL มีชนิดหรือไม่?
แหล่งที่มาที่หลากหลาย (เช่นWikipedia , PSOUG ) ระบุว่า Oracle nullไม่มีประเภท มันเป็นเรื่องจริงเหรอ? แล้ว RDBMS อื่น ๆ ล่ะ?
14 datatypes  null 

1
วิธีโยกย้ายตารางหยดขนาดใหญ่จาก mysql ไปยัง postgresql
ตอนนี้ฉันกำลังย้ายฐานข้อมูล MySQL ไปยัง PostgreSQL เกือบทุกอย่างเป็นไปด้วยดี (ดีหลังจาก googling มากมายสำหรับ mysqldump params และอื่น ๆ ) ยกเว้นตารางเดียวที่ฉันมี - จริง ๆ แล้วเป็นตารางที่สำคัญที่สุดในแอปของฉัน โครงสร้างตารางง่ายมาก: mysql> show create table samples; .. skipped ... CREATE TABLE `samples` ( `File_ID` int(11) NOT NULL, `File` longblob, PRIMARY KEY (`File_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=binary แต่มันมีขนาดใหญ่มาก (> 20 Gb) ฉันพยายามใช้ --hex-blob …

3
เครื่องมือเพิ่มประสิทธิภาพการสืบค้น MySQL อ่านสถิติดัชนีจากที่ใด
ฉันพยายามหาว่าตัวเพิ่มประสิทธิภาพ MySQL ได้รับรายการดัชนีที่มีอยู่ในตารางหรือไม่เมื่อประเมินค่าแบบสอบถาม (เตรียม) แบบสอบถาม

3
ALTER TABLE บนตารางขนาดใหญ่พร้อมคอลัมน์ที่จัดทำดัชนี
ฉันมีตารางขนาดใหญ่ที่มีคอลัมน์ VARCHAR (20) และฉันต้องแก้ไขเพื่อให้เป็นคอลัมน์ VARCHAR (50) โดยปกติแล้วการแสดง ALTER TABLE (การเพิ่ม TINYINT) ในตารางนี้จะใช้เวลาประมาณ 90-120 นาทีในการดำเนินการดังนั้นฉันสามารถทำได้ในคืนวันเสาร์หรือวันอาทิตย์เท่านั้นเพื่อหลีกเลี่ยงผลกระทบต่อผู้ใช้ฐานข้อมูล ถ้าเป็นไปได้ฉันต้องการจะทำการแก้ไขก่อนหน้านี้ คอลัมน์ถูกทำดัชนีด้วยซึ่งฉันเข้าใจว่าจะทำให้ ALTER TABLE ช้าลงเนื่องจากต้องสร้างดัชนีใหม่หลังจากแก้ไขความยาวคอลัมน์ แอพพลิเคชั่นเว็บถูกตั้งค่าในสภาพแวดล้อมการจำลองแบบ MySQL (26 ทาสและต้นแบบหนึ่งคน) ฉันจำได้ว่าเมื่ออ่านที่ไหนสักแห่งว่าวิธีหนึ่งคือการดำเนินการ ALTER TABLE บนแต่ละสลาฟก่อน (ลดผลกระทบต่อผู้ใช้) จากนั้นทำสิ่งนี้กับ Master แต่จะไม่ลองทำซ้ำคำสั่ง ALTER TABLE กับทาส? ดังนั้นคำถามของฉันคือ: วิธีที่ดีที่สุดสำหรับฉันที่จะปรับเปลี่ยนตารางนี้มีการหยุดชะงักขั้นต่ำให้กับผู้ใช้ของฉันคืออะไร? แก้ไข: ตารางคือ InnoDB

1
Information_SCHEMA ใช้งานอย่างไรใน MySQL?
INFORMATION_SCHEMA ตามทฤษฎีแล้วเป็นชุดของมุมมองที่ระบุในมาตรฐาน SQL ที่อนุญาตให้ผู้ใช้ตรวจสอบข้อมูลเมตาของระบบ มันนำมาใช้ใน MySQL ได้อย่างไร? เมื่อฉันเชื่อมต่อกับติดตั้งใหม่ผมเห็นสองฐานข้อมูล: และmysql information_schemaหลังจากใช้SHOW CREATE TABLEคำสั่งบนinformation_schemaฐานข้อมูลดูเหมือนว่าไม่ได้ใช้งานเป็นชุดของมุมมอง แต่ใช้กับตารางฐานแทน สมมติฐานนี้ถูกต้องหรือไม่ หรือมีตารางระบบอื่น ๆ ที่ซ่อนอยู่จากผู้ใช้?

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

1
ทำไม SQL * PLUS ถึงต้องการสแลชหลังจากสร้าง CREATE TYPE
ฉันเพิ่งมีปัญหาที่ฉันกำหนดประเภทและทดสอบในคางคกและทั้งหมดก็โอเค แต่ทำงานภายใต้ SQL * PLUS มันเกิดข้อผิดพลาด ตัวอย่าง: CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); ด้วยเหตุผลบางอย่างฉันต้องเพิ่มเครื่องหมายทับที่นี่ CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); / สำหรับฉันแล้วมันคล้ายกับคำสั่งสร้างตารางซึ่งไม่ต้องใช้เครื่องหมายทับ ฉันคิดว่ามันค่อนข้างสับสน ฉันรู้ว่ามันทำงานอย่างไร แต่ทุกคนสามารถอธิบายได้ว่าทำไมการตัดสินใจออกแบบนี้จึงเกิดขึ้น

3
วิธีที่มีประสิทธิภาพมากที่สุดในการทำซ้ำอินสแตนซ์บน SQL 2008 คืออะไร
เรามีอินสแตนซ์ฐานข้อมูลอย่างง่ายที่มีข้อมูลเพียงพอในฐานข้อมูลเพื่อให้มีประโยชน์และเราสามารถใช้เพื่อวัตถุประสงค์ในการสาธิตและฉันต้องการที่จะนำสำเนาของมันไปไว้ในแล็ปท็อปของฉัน ฉันไม่ได้อยู่ที่สำนักงาน (อินสแตนซ์ฐานข้อมูล dev ปกติมีขนาดประมาณ 150GB หนึ่งอินสแตนซ์นี้คือ 3GB) วิธีทำซ้ำ / สคริปต์ได้มากที่สุดสำหรับการสร้างอินสแตนซ์บนแล็ปท็อปของฉันใหม่คืออะไร ฉันแน่ใจว่าฉันจะต้องเรียกใช้งานโปรแกรมติดตั้งอีกครั้งสำหรับ SqlServer2008 และตั้งค่าอินสแตนซ์ แต่หลังจากนั้น ... ฉันคิดว่าฉันต้องการจะลบฐานข้อมูลเก่าของฉันทุกเดือนหรือมากกว่านั้น คัดลอกสิ่งใหม่ทั้งหมดไปยังแล็ปท็อปของฉันเนื่องจากอินสแตนซ์ของฉันจะไม่เปลี่ยนแปลงทั้งในระบบสาธิตเดียวหรือแล็ปท็อป แต่ฐานข้อมูลเองจะอัปเดตพร้อมรีเฟรชบน sprocs และอื่น ๆ ฉันได้พิจารณาการเขียนสคริปต์ทั้งหมด "ปล่อยฐานข้อมูล - ไฟล์เพิ่มฐานข้อมูล - ไฟล์ {พา ธ }" และเก็บไว้ในไฟล์แบทช์ที่รันได้ในบางประเภทแล้วฉันจะ "วางลบคัดลอกเพิ่ม" แต่สงสัยว่ามี เป็นวิธีที่ดีกว่าแค่ xcopy และแบทช์? ฉันกำลังพยายามทำสิ่งนี้ในราคาถูก (เราไม่ได้ลองทำในราคาถูกเสมอไป) ดังนั้นฉันจึงไม่สนใจผลิตภัณฑ์ RedGate เป็นพิเศษ ฉันต้องการบางสิ่งที่ฉันสามารถบำรุงรักษาได้อย่างง่ายดายในเครื่องมือแก้ไขข้อความด้วยตนเอง

5
ฉันจะค้นหามุมมองบันทึก 20 ล้านรายการนี้เร็วขึ้นได้อย่างไร
สำหรับฟังก์ชั่นการค้นหาฉันใช้มุมมองที่มีระเบียนจากตารางทั้งหมดที่ฉันต้องการค้นหา มุมมองมีเกือบ 20 ล้านบันทึก การค้นหามุมมองนี้ใช้เวลานานเกินไป ฉันควรปรับปรุงการทำงานของมุมมองนี้ที่ไหน คำจำกัดความคร่าวๆสำหรับมุมมองด้านล่าง ประกอบด้วยสิบสามตารางและรอบ ๆ สามสิบฟิลด์ CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') …

5
จับคู่คอลัมน์เดี่ยวกับค่าหลายค่าโดยไม่มีตารางการเข้าร่วมด้วยตนเองใน MySQL
เรามีตารางที่เราใช้เก็บคำตอบของคำถาม เราจำเป็นต้องสามารถค้นหาผู้ใช้ที่มีคำตอบบางคำถาม ดังนั้นหากตารางของเราประกอบด้วยข้อมูลต่อไปนี้: user_id question_id answer_value Sally 1 Pooch Sally 2 Peach John 1 Pooch John 2 Duke และเราต้องการค้นหาผู้ใช้ที่ตอบว่า 'Pooch' สำหรับคำถามที่ 1 และ 'Peach' สำหรับคำถามที่ 2 SQL จะดังต่อไปนี้ (ชัด) ไม่ต้องกังวล: select user_id from answers where question_id=1 and answer_value = 'Pooch' and question_id=2 and answer_value='Peach' ความคิดแรกของฉันคือการเข้าร่วมโต๊ะด้วยตนเองสำหรับแต่ละคำตอบที่เรากำลังมองหา: select a.user_id from answers a, …

3
จะทำอย่างไรเมื่อเขตข้อมูลในตารางใกล้จำนวนสูงสุด 32 บิตหรือไม่ได้ลงนาม?
ในฐานข้อมูลที่กำหนดใด ๆ ที่เก็บบันทึกผู้ใช้ในรูปแบบของฟิลด์การเพิ่มอัตโนมัติที่ไม่ซ้ำกัน (เพื่อประโยชน์ของตัวอย่างข้อความระหว่างผู้ใช้) ... จะทำอย่างไรเมื่อถึงเวลาและใกล้ถึงจำนวนสูงสุดที่ลงนามหรือไม่ได้ลงนาม ชนิดข้อมูลปัจจุบัน (INT 32- บิต) ฉันเดาว่าเซิร์ฟเวอร์ฐานข้อมูลจะล้นเมื่อพยายามกำหนดหมายเลข (2∧32) -1 ให้กับรายการถัดไปดังนั้นวิธีหลีกเลี่ยงเหตุการณ์นั้น (โดยไม่ต้องเปลี่ยนประเภทข้อมูลเพื่อประโยชน์ของคำถาม) และ เพิ่มระเบียนต่อไปไหม คุณจะทำอย่างไร ทำไมฉันถึงต้องใช้ INT และไม่ใช้ตัวอย่างเช่น VARCHARS หลายวันแล้วที่ฉันถามคำถามสมมุตินี้กับตัวเองและฉันอยากจะรู้ว่ามืออาชีพทำอะไร
14 mysql 

3
SQL Server - ชั่วคราวเทียบกับตารางทางกายภาพ
มีการเคลื่อนไหวอยู่ในสถานที่ของฉันจ้างเพื่อย้ายออกจากการใช้ตาราง #temp และแทนที่จะใช้ตารางทางกายภาพถาวรกับ SPID เมื่อใดก็ตามที่หนึ่งก่อนหน้านี้จะถูกแทรกลงในตาราง #temp ตอนนี้INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)จำเป็นต้องมี - พร้อมกับDELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPIDคำสั่งที่จุดเริ่มต้นของเช่นขั้นตอนการจัดเก็บ นอกจากนี้มันจะไปได้ทุกที่โดยไม่บอกว่าเหล่านี้ตารางถาวรสำหรับการจัดเก็บข้อมูลชั่วคราว WHERE SPID = @@SPID'ถูกนำมาใช้อย่างใดอย่างหนึ่งต้องมีความระมัดระวังที่จะรวมถึง ตรรกะเบื้องหลังการย้ายไปสู่การปฏิบัตินี้คือมันจะปรับปรุงประสิทธิภาพโดยรวมของเซิร์ฟเวอร์ที่การสืบค้นกำลังทำงานอยู่ (โดยการลด I / O และการช่วงชิงใน tempdb) ฉันไม่กระตือรือร้นกับวิธีการนี้ด้วยเหตุผลหลายประการ - มันน่าเกลียดอาจเป็นอันตรายและดูเหมือนว่าอาจเป็นอันตรายต่อประสิทธิภาพการทำงานของข้อความค้นหาเหล่านั้นที่ใช้รูปแบบใหม่ ใครบ้างมีประสบการณ์กับวิธีนี้หรือคล้ายกันในการกำจัดตาราง #temp หรือไม่

5
แนบ / แยกออกจากการสำรองข้อมูล / เรียกคืน
ฉันต้องการถ่ายโอนฐานข้อมูล (ภาพรวม) ไปยังเซิร์ฟเวอร์อื่นเพื่อสร้างฐานข้อมูลซ้ำเพื่อตั้งค่าสภาพแวดล้อมการทดสอบอื่น ฉันมีสองทางเลือก: ทำการสำรองข้อมูลเต็มรูปแบบที่เซิร์ฟเวอร์ต้นทาง / กู้คืนที่เซิร์ฟเวอร์ปลายทาง; แยกที่เซิร์ฟเวอร์ต้นทาง / แนบที่เซิร์ฟเวอร์ปลายทาง ข้อดีและข้อเสียของทั้งสองโซลูชั่นตามความต้องการของฉันคืออะไร ฉันใช้ SQL Server 2008 Enterprise

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