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

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

4
มีเครื่องมือในการตรวจสอบว่าฐานข้อมูลของฉันเป็นมาตรฐานในรูปแบบปกติที่สามหรือไม่?
ฉันเรียนรู้เกี่ยวกับการทำให้เป็นมาตรฐานเมื่อเร็ว ๆ นี้และเข้าใจว่าการใช้สคีมาใหม่นั้นมีความสำคัญเพียงใด ฉันจะตรวจสอบว่าฐานข้อมูลของฉันเป็นไปตาม 2NF หรือ 3NF ได้หรือไม่? การตรวจสอบด้วยตนเองเป็นตัวเลือกที่แน่นอน แต่ฉันกำลังมองหาเครื่องมืออัตโนมัติที่นี่ ฉันไม่ได้กำลังมองหาเครื่องมือจุดและคลิกสิ่งที่มากกว่านั้นจะเน้นการปรับให้เหมาะสมที่สุดเพื่อให้เป็นไปตามตาราง 3NF ฉันเดาว่าอาจใช้สถิติจากข้อมูลตัวอย่างที่ดีและ / หรือการวิเคราะห์ความหมายของชื่อคอลัมน์

3
MongoDB: ข้อกำหนดของ RAM
มันเพียงพอที่จะมีดัชนีทั้งหมดในหน่วยความจำ / ram หรือ mongodb ยังพยายามจัดสรร ram ให้มากที่สุดเท่าที่จะทำได้เพื่อจัดเก็บแม้กระทั่งข้อมูลสำหรับการอ่านที่รวดเร็วหรือไม่? ฉันต้องการเรียกใช้แอปพลิเคชัน mongodb + อื่น ๆ และดูเหมือนว่า mongodb เป็นแอปพลิเคชั่นเดียวที่ไม่อนุญาตให้ฉันกำหนดช่วงของ RAM เพื่อบอกว่า "max_memory_allocated_or_reserved = 8GB" หากไม่มีวิธีที่จะทำเช่นนั้นฉันควรจะอธิบายกับนักฆ่าอุ้มว่า mongod เป็นกระบวนการ "ไม่ดี" ซึ่งไม่ใช่แนวปฏิบัติที่ดีที่สุดในความคิดของฉัน ...
20 mongodb 

2
แบบสอบถาม T-SQL โดยใช้แผนแตกต่างกันอย่างสมบูรณ์ขึ้นอยู่กับจำนวนแถวที่ฉันกำลังอัปเดต
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีคำสั่ง SQL UPDATE พร้อมประโยค "TOP (X)" และแถวที่ฉันอัปเดตค่ามีประมาณ 4 พันล้านแถว เมื่อฉันใช้ "TOP (10)" ฉันจะได้รับแผนการดำเนินการหนึ่งแผนซึ่งจะดำเนินการเกือบจะทันที แต่เมื่อฉันใช้ "TOP (50)" หรือใหญ่กว่าแบบสอบถามจะไม่เสร็จสิ้น (อย่างน้อยไม่ใช่ในขณะที่ฉันรอ) มันใช้แผนการดำเนินการที่แตกต่างอย่างสิ้นเชิง เคียวรีขนาดเล็กใช้แผนอย่างง่ายมากที่มีคู่ของการค้นหาดัชนีและการเข้าร่วมลูปที่ซ้อนกันซึ่งแบบสอบถามเดียวกันที่แน่นอน (มีจำนวนแถวที่แตกต่างกันในส่วนคำสั่งย่อยด้านบนของคำสั่ง UPDATE) ใช้แผนที่เกี่ยวข้องกับการค้นหาดัชนีสองรายการ สปูลของตารางการขนานและความซับซ้อนอื่น ๆ ฉันใช้ "OPTION (ใช้แผน ... )" เพื่อบังคับให้ใช้แผนการดำเนินการที่สร้างโดยเคียวรีขนาดเล็ก - เมื่อฉันทำสิ่งนี้ฉันสามารถอัปเดตได้มากถึง 100,000 แถวในไม่กี่วินาที ฉันรู้ว่าแผนการสืบค้นเป็นสิ่งที่ดี แต่ SQL Server …

3
จะรับการแจ้งเตือนไปยังสตรีมเอาต์พุตได้อย่างไร
ฉันมีข้อความดีบั๊กในฟังก์ชั่น ข้อความเหล่านั้นถูกยกขึ้นเช่น RAISE NOTICE 'Value of id : %', id; ฉันตั้งค่าไฟล์บันทึกด้วย \o messages.txt จากนั้นฉันทำสิ่งที่ฉันต้องทำ \i process.sql \oและเมื่อการดำเนินการถูกยกเลิก ปัญหาคือฉันไม่มีข้อความที่เพิ่มขึ้นโดยการแจ้งเตือนลงใน messages.txt ข้อความปรากฏบนหน้าจอ แต่ฉันต้องการให้เขียนเป็นข้อความในข้อความ.txt ฉันจะทำสิ่งนั้นได้อย่างไร ฉันพยายามใช้RAISE LOG...และข้อความเขียนในล็อกไฟล์ ... ไม่ใช่สิ่งที่ฉันต้องการ ฉันมีงานทำด้วย plsql -f /path/to/process.sql > messages.txt 2>&1 แต่ฉันอยากจะรู้ว่าฉันสามารถใช้ \ i และ \ o บนไคลเอนต์ plsql ที่มีข้อความเป็นไฟล์ที่ระบุใน \ o ลูกค้าของฉันใน cygwin คือ psql (PostgreSQL) 8.2.11 …
20 postgresql 

2
สิ่งที่ต้องตั้ง innodb_buffer_pool และทำไม ..
ฉันมีInnoDBดัชนีและข้อมูล170GB ฉันต้องปรับขนาด innodb_buffer_pool เพื่อประสิทธิภาพที่ดีขึ้นขนาดตารางสูงสุดของตาราง InnoDB (ดัชนี + ข้อมูล) คือ 28GB ดังนั้นสิ่งที่ควรมีขนาดที่เหมาะสมของ innodb_buffer_pool UPDATE เรากำลังจะย้ายฐานข้อมูลท้องถิ่นของเราไปยัง ec2 ดังนั้นจะตั้งค่า RAM ตามสถิติปัจจุบันของ innodb นั่นคือเหตุผลที่ฉันต้องการขนาดของบัฟเฟอร์พูลเพื่อให้เรามี RAM ที่มีอยู่ เปิดใช้งานไฟล์ต่อตารางแล้ว ฉันใช้เครื่องลีนุกซ์
20 mysql  innodb 

2
การรวบรวม SQL ส่งผลกระทบต่อประสิทธิภาพการทำงานของ SQL Server อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันสร้างอินสแตนซ์ของ SQL Server 2005 และฉันผ่านการSQLServer:SQL Statistics - SQL Compilations/secวัดของ PerfMon ฉันเห็นว่าค่าเฉลี่ยประมาณ 170 หรือมากกว่านั้น ฉันเปิดตัว SQL Profiler และค้นหา SP: Compile หรือ SQL: Compile events เห็นได้ชัดว่าพวกเขาไม่อยู่ ฉันค้นหาStored Procedure/SP:RecompileและTSQL/SQL:StmtRecompileจัดกิจกรรม จำนวนข้อมูลที่ฉันเห็นใน Profiler แสดงให้เห็นว่าสิ่งเหล่านี้เป็นเหตุการณ์ที่ไม่ถูกต้องที่ต้องดูแม้ว่าฉันจะไม่แน่ใจ ดังนั้นคำถามของฉัน คำตอบสำหรับสิ่งเหล่านี้จะดีมาก ฉันจะดูสิ่งที่รวบรวมใน SQL Server ได้อย่างไร ฉันเลือกการวัดที่ไม่ถูกต้องเพื่อดูหรือไม่ ทั้งใน Perfmon หรือ …

2
กระทำจำเป็นหลังจากการดำเนินการ DML ในฟังก์ชั่น / ขั้นตอนหรือไม่?
ฉันสงสัยว่าถ้าจำเป็นต้องเขียนคอมมิทหลังจากใส่ / ลบ / อัพเดทในฟังก์ชั่น / ขั้นตอนหรือไม่ ตัวอย่าง: create or replace function test_fun return number is begin delete from a; return 0; end; หรือขั้นตอน create or replace procedure aud_clear_pro as begin delete from a; end; มันจำเป็นต้องกระทำหลังจากลบ? ไม่เข้าใจสถานการณ์ต่อไปนี้: ถ้าฉันเรียก function / procedure จากหน้าต่าง SQL มันต้องยอมรับ แต่ หากฉันกำหนดเวลาฟังก์ชั่น / ขั้นตอนโดยใช้ dbms_scheduler และเรียกใช้งานคำสั่งลบจะถูกส่งโดยอัตโนมัติ …

3
คอลัมน์บิตของ SQL Server ใช้เนื้อที่ทั้งไบต์จริง ๆ หรือไม่
ฉันแหย่ไปรอบ ๆ SSMS และสังเกตว่า "ขนาด" ของINTคอลัมน์ของฉันคือ 4 ไบต์ (คาดว่า) แต่ฉันก็ตกใจเล็กน้อยเมื่อเห็นว่าBITคอลัมน์ของฉันเป็นไบต์ทั้งหมด ฉันเข้าใจผิดหรือเปล่าว่ากำลังดูอะไรอยู่?



2
กู้คืนฐานข้อมูลไม่รวมข้อมูล FILESTREAM
บริบท เรากำลังพัฒนาระบบที่มีฐานข้อมูลขนาดใหญ่ที่ด้านล่าง มันเป็นฐานข้อมูล MS SQL ที่ทำงานบน SQL Server 2008 R2 ขนาดทั้งหมดของฐานข้อมูลประมาณ 12 GB จากนี้ประมาณ 8.5 GB BinaryContentอยู่ในตารางเดียว ดังที่ชื่อแนะนำนี่คือตารางที่เราเก็บไฟล์อย่างง่ายทุกชนิดไว้ในตารางโดยตรงในฐานะ BLOB เมื่อเร็ว ๆ นี้เราได้ทดสอบความเป็นไปได้ในการย้ายไฟล์เหล่านี้ออกจากฐานข้อมูลไปยังระบบไฟล์โดยใช้ FILESTREAM เราทำการแก้ไขที่จำเป็นในฐานข้อมูลของเราโดยไม่มีปัญหาใด ๆ และระบบของเรายังคงทำงานได้ดีหลังจากการย้ายข้อมูล BinaryContentตารางมีลักษณะประมาณนี้: CREATE TABLE [dbo].[BinaryContent]( [BinaryContentID] [int] IDENTITY(1,1) NOT NULL, [FileName] [varchar](50) NOT NULL, [BinaryContentRowGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL ) ON [PRIMARY] FILESTREAM_ON [FileStreamContentFG] ALTER …

2
ความแตกต่างระหว่าง GROUP BY B, A และ GROUP BY COALESCE (B, A)
ฉันสับสนตัวเองมาก มีใครบางคนกรุณาอธิบายภายใต้สถานการณ์ที่ฉันต้องการใช้ GROUP BY COALESCE ฉันเดาว่าฉันจะใช้มันถ้าฉันต้องการจัดกลุ่มชุดข้อมูลตามคอลัมน์ B แบบมีเงื่อนไข (ถ้า B ไม่ใช่โมฆะ) และคอลัมน์ A เป็นอย่างอื่น เสียงนั้นใช่ไหม
20 oracle  query 

1
อะไรคือกายวิภาคของดัชนีคอลัมน์
หนึ่งในคุณสมบัติใหม่ในชื่อรหัส SQL Server 2012 Denaliคือดัชนี Columnstore ฉันรู้ดีเกี่ยวกับดัชนีการจัดเก็บแถวเก่าทั่วไปเช่นโครงสร้าง b-tree ความแตกต่างในการจัดเก็บระหว่างระดับลีฟและเพจ b-tree ผลกระทบของฟิลด์ที่รวมไว้การปรับให้เหมาะสมเพื่อใช้งานลำดับของคีย์เป็นต้น ฉันมีปัญหาในการรับข้อมูลที่ดีเกี่ยวกับinternalsของดัชนี columnstore มันเป็นโครงสร้างอย่างไร มีต้นไม้ b หรือไม่? มีโครงสร้างอื่น ๆ ในสถานที่? มีการจัดระเบียบข้อมูลอย่างไร ตัวดำเนินการเฉพาะประเภทใดที่เหมาะสมที่สุดที่จะใช้ มีรูปแบบการต่อต้านแบบอื่นที่ควรหลีกเลี่ยงเมื่อใช้งาน? สิ่งที่ฉันสามารถค้นหาเกี่ยวกับพวกเขานั้นเป็นสิ่งที่ตรงกันข้ามกับดัชนี "ปกติ" คือไม่มีการเรียงลำดับของคีย์ไม่มีเขตข้อมูลที่รวมไม่รวมอยู่เท่านั้น ข้อมูลเชิงลึกใด ๆ ที่ชื่นชม

2
ทำไม IDENTITY_INSERT ON อนุญาตให้ทำได้ครั้งละหนึ่งตารางเท่านั้น
เป็นกรณีที่IDENTITY_INSERTสามารถตั้งค่าเป็น ON ในตารางฐานข้อมูลครั้งละหนึ่งตารางเท่านั้น แต่เพราะเหตุใด เนื่องจากIDENTITYคอลัมน์นั้นไม่เหมือนกันในระดับโลกฉันจึงไม่สามารถนึกถึงสถานการณ์อันตรายใด ๆ ที่อาจเกิดจากการแทรกข้อมูลระบุตัวตนลงในตารางมากกว่าหนึ่งตารางในเวลาเดียวกัน IDENTITY INSERT ไม่ควรนำมาใช้ แต่เหตุผลสำหรับขีด จำกัด ยากคืออะไร
20 sql-server 

2
จะจับและจัดการข้อยกเว้นเฉพาะของ Oracle ได้อย่างไร
จากนี้และนี่ฉันเดาว่าจะไม่มีข้อยกเว้นของระบบที่กำหนดชื่อไว้ล่วงหน้าสำหรับ ORA-00955 ฉันจะเขียนสิ่งต่อไปนี้เพื่อดักจับข้อผิดพลาด ORA-00955 เท่านั้นได้อย่างไร begin EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1'; exception when OTHERS then Null; end; BTW มีไวยากรณ์ใดที่จะตรวจจับข้อผิดพลาดโดยเพียงแค่ระบุรหัสข้อผิดพลาดหรือไม่?
20 oracle  exception 

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