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

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

3
LIKE ถูกนำไปใช้อย่างไร
ทุกคนสามารถอธิบายวิธีการใช้งานตัวดำเนินการ LIKE ในระบบฐานข้อมูลปัจจุบัน (เช่น MySQL หรือ Postgres) ได้อย่างไร หรือชี้ให้ฉันอ้างอิงบางอย่างที่อธิบายได้หรือไม่ แนวทางที่ไร้เดียงสาคือการตรวจสอบแต่ละเร็กคอร์ดดำเนินการจับคู่นิพจน์ปกติหรือการจับคู่สตริงบางส่วนในสาขาที่สนใจ แต่ฉันมีความรู้สึก (หวัง) ว่าระบบเหล่านี้ทำสิ่งที่ชาญฉลาดขึ้น

2
ฉันต้องมีดัชนีแยกต่างหากสำหรับการสืบค้นแต่ละประเภทหรือไม่หรือจะใช้ดัชนีหลายคอลัมน์ได้หรือไม่
ฉันค่อนข้างรู้คำตอบสำหรับคำถามนี้อยู่แล้ว แต่ฉันรู้สึกเสมอว่ามีมากกว่าที่ฉันต้องรับในหัวข้อ ความเข้าใจพื้นฐานของฉันคือการพูดโดยทั่วไปดัชนีเดียวที่รวมเขตข้อมูลทั้งหมดที่คุณอาจทำการสืบค้น / เรียงลำดับในเวลาที่กำหนดไม่น่าจะมีประโยชน์ แต่ฉันได้เห็นสิ่งนี้แล้ว บางคนคิดว่า "เอาล่ะถ้าเราใส่ข้อมูลทั้งหมดลงในดัชนีฐานข้อมูลก็สามารถใช้เพื่อค้นหาสิ่งที่ต้องการ" โดยไม่ต้องเห็นแผนการดำเนินการสำหรับการสืบค้นจริงบางข้อ ลองนึกภาพโต๊ะแบบนี้: id int pk/uid name varchar(50) customerId int (foreign key) dateCreated datetime ผมอาจจะเห็นดัชนีเดียวรวมทั้งname, customerIdและdateCreatedสาขา แต่ความเข้าใจของฉันคือว่าดัชนีดังกล่าวจะไม่ถูกใช้ในแบบสอบถามเช่น: SELECT [id], [name], [customerId], [dateCreated] FROM Representatives WHERE customerId=1 ORDER BY dateCreated สอบถามเช่นมันดูเหมือนว่าผมว่าเป็นความคิดที่ดีกว่าจะเป็นดัชนีรวมทั้งcustomerIdและdateCreatedเขตที่มีcustomerIdข้อมูลเป็น 'ครั้งแรก' สิ่งนี้จะสร้างดัชนีที่จะมีการจัดระเบียบข้อมูลในลักษณะที่แบบสอบถามนี้สามารถค้นหาสิ่งที่ต้องการได้อย่างรวดเร็ว - ตามลำดับที่ต้องการ อีกสิ่งที่ฉันเห็นบ่อยครั้งเป็นอันดับแรกคือดัชนีแต่ละรายการในแต่ละฟิลด์ เพื่อให้แต่ละคนบนname, customerIdและdateCreatedสาขา ไม่เหมือนตัวอย่างแรกข้อตกลงประเภทนี้บางครั้งฉันก็ดูเหมือนจะมีประโยชน์บางส่วน แผนการดำเนินการของแบบสอบถามอาจแสดงให้เห็นว่าอย่างน้อยก็ใช้ดัชนีในcustomerIdเพื่อเลือกระเบียน แต่ไม่ได้ใช้ดัชนีกับdateCreatedเขตข้อมูลเพื่อเรียงลำดับ ฉันรู้ว่านี่เป็นคำถามที่กว้างขวางเพราะคำตอบเฉพาะสำหรับคำถามใด ๆ ในชุดของตารางใด …
22 sql-server  index 

3
Mnesia: ข้อดีและความแตกต่าง
Mnesia มีข้อได้เปรียบอะไรบ้างเกี่ยวกับการติดตั้งฐานข้อมูล SQL ที่สำคัญและมีความแตกต่างกันอย่างไร? ฉันสามารถใช้ฐานข้อมูลเพื่อเก็บข้อมูลจำนวนมหาศาลได้โดยไม่ทำให้ประสิทธิภาพเสื่อมลงอย่างเห็นได้ชัดหรือไม่?

1
มีวิธีที่ดีในการเรียกใช้ทริกเกอร์สำหรับแต่ละระเบียนในตาราง postgres หรือไม่?
ฉันมีระบบที่ฉันไม่สามารถควบคุมการออกแบบของบางตาราง (ทำซ้ำผ่าน Slony-I) และดังนั้นฉันจึงมีชุดของสิ่งที่เราอ้างถึงเป็น 'shadow tables' ซึ่งฉันดึงข้อมูลบางส่วนออกจากตารางที่จำลองแบบแล้ว และเก็บไว้ในแบบฟอร์มการประมวลผลที่ฉันต้องการในขณะที่แยกระเบียนที่ฉันต้องการละเว้น ตอนนี้หลังจากตั้งค่าแบบจำลองใหม่ฉันเรียกใช้การอัปเดตและตั้งค่ากลับเป็นของตัวเอง (เช่นUPDATE tablename SET field=field) เพื่อบังคับให้ทริกเกอร์ทำงาน แต่ตารางบางตารางมีระเบียนนับล้านและเติบโตและใช้เวลา 30 นาที . (แล้วมีวัคซีนด้วย) มีวิธีที่ดีกว่าในการทริกเกอร์มันหรือวิธีเขียนฟังก์ชั่นบางอย่างเพื่อให้ทำงานกับอินพุตที่ส่งผ่านหรือNEWขึ้นอยู่กับบริบทการโทร? ฉันลังเลที่จะเก็บฟังก์ชั่นที่แตกต่างกันสองอย่างเอาไว้เพราะฉันเห็นหลายครั้งที่มีการอัปเดต

7
จำเป็นต้องโยกย้าย SQL Server ไปยัง MySQL
ฉันมีฐานข้อมูลบน SQL Server 2008 บนเซิร์ฟเวอร์ Windows และฉันต้องการย้ายข้อมูลทั้งหมดไปยังฐานข้อมูล MySQL บนเซิร์ฟเวอร์ Ubuntu ฉันได้ลองใช้ตัวช่วยสร้างการนำเข้าและส่งออกเซิร์ฟเวอร์ SQL ด้วยไดรเวอร์ MySQL ODBC และเข้าถึงฐานข้อมูลทั้งสองได้อย่างถูกต้อง แต่ไฟล์ xml ที่มีข้อกำหนดสำหรับการแปลงประเภทไม่มีอยู่จริงและข้อกำหนด จำกัด เกินไปสำหรับฉันในการสร้างอย่างถูกต้อง ไม่มีใครรู้วิธีสร้างไฟล์แปลงประเภทหรือสถานที่ที่จะได้รับเครื่องมือที่ดีกว่าสำหรับการถ่ายโอนข้อมูลนี้หรือไม่?

4
วิธี จำกัด จำนวนแถวสูงสุดในตารางให้เหลือเพียง 1
ฉันมีตารางการกำหนดค่าในฐานข้อมูล SQL Server ของฉันและตารางนี้ควรมีแถวเดียวเท่านั้น เพื่อช่วยให้นักพัฒนาในอนาคตเข้าใจสิ่งนี้ฉันต้องการป้องกันไม่ให้มีการเพิ่มข้อมูลมากกว่าหนึ่งแถว ฉันเลือกที่จะใช้ทริกเกอร์สำหรับสิ่งนี้ดังนี้ ... ALTER TRIGGER OnlyOneConfigRow ON [dbo].[Configuration] INSTEAD OF INSERT AS BEGIN DECLARE @HasZeroRows BIT; SELECT @HasZeroRows = CASE WHEN COUNT (Id) = 0 THEN 1 ELSE 0 END FROM [dbo].[Configuration]; IF EXISTS(SELECT [Id] FROM inserted) AND @HasZeroRows = 0 BEGIN RAISERROR ('You should not …

1
“ ORA-03113: สิ้นสุดไฟล์ในช่องทางการสื่อสาร” เมื่อเริ่มต้น
ฉันได้อ่านโพสต์ที่นี่ในการสนับสนุน Oracle และที่อื่นฉันสามารถค้นหาในสามวันที่ผ่านมาและฉันได้รับในปัญหานี้ ... ฐานข้อมูล Oracle หยุดทำงาน การปิดฐานข้อมูลนั่งสองสามชั่วโมงจากนั้นจะปิด มันจะไม่รีสตาร์ท เซิร์ฟเวอร์เริ่มต้นใหม่ Oracle ถูกรีสตาร์ท ไปทีละขั้นตอน: งานเริ่มต้นทำงานชื่อ, แก้ไขงานติดตั้งฐานข้อมูล, เปิดฐานข้อมูลการเปลี่ยนแปลงผลตอบแทน ORA-03113 นี่คือทั้งหมดใน localhost - ไม่ผ่านเครือข่าย เครื่องไม่มีไฟร์วอลล์ชนิดใดทำงาน มีความคิดว่าจะแก้ไขข้อผิดพลาด ORA-03113 นี้ได้อย่างไร ฉันใช้โทรศัพท์พร้อมการสนับสนุนในอินเดียในช่วง 4.5 ชั่วโมงที่ผ่านมาและฉันยังไม่พบใครที่มีประโยชน์
22 oracle  startup 

6
จะทราบได้อย่างไรว่าตาราง Oracle ถูกล็อคหรือไม่?
เราใช้ซอฟต์แวร์ BI และฐานข้อมูลพื้นที่เก็บข้อมูลที่ติดตั้งใน Oracle Enterprise 11gR2 รายงานแบทช์บางส่วนจะพยายามเข้าถึงตารางฐานข้อมูลซึ่งอาจยังถูกล็อค ฉันจะทราบได้อย่างไรว่าตาราง Oracle ถูกล็อคหรือไม่ มีคำสั่ง SQL ที่แสดงเหมือนรายละเอียดประวัติเพื่อการวิเคราะห์หรือไม่?

3
วิธีเลือกการเปรียบเทียบสำหรับฐานข้อมูลสากล?
ฉันกำลังออกแบบฐานข้อมูลที่จะเก็บข้อมูลในภาษาต่าง ๆ (โดยใช้ UTF-8) ดังนั้นฉันคิดว่าวิธีที่ดีที่สุดในการแสดงผลลัพธ์ของแบบสอบถามคือการสั่งซื้อตามภาษาของผู้ใช้ในระหว่างการสืบค้น ( เพราะมีมากกว่าหนึ่ง วิธีที่ถูกต้องในการทำเช่นนั้น ) ดังนี้: SELECT a < b COLLATE "de_DE" FROM test1; สมมติว่านี่เป็นวิธีที่ถูกต้องในการทำงานกับข้อมูลระหว่างประเทศซึ่งเป็นการเปรียบเทียบที่ดีที่สุดสำหรับฐานข้อมูลตัวเอง? เอกสาร PostgreSQL บอกว่า : การเปรียบเทียบทั้ง C และ POSIX ระบุพฤติกรรม "ดั้งเดิม C" ซึ่งมีเพียงตัวอักษร ASCII "A" ถึง "Z" เท่านั้นที่จะถือว่าเป็นตัวอักษรและการเรียงลำดับจะกระทำอย่างเคร่งครัดโดยค่าไบต์รหัสตัวอักษร ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดในกรณีนี้หรือฉันผิด (คำถามโบนัส: มันช้าเกินไปที่จะเลือกการเรียงในแบบสอบถามหรือไม่)

1
เหตุใดจึงสร้างดัชนี ... ด้วยออนไลน์ = บล็อกการเข้าถึงตารางในช่วงเวลาไม่กี่นาที
ฉันมีตารางที่มีอยู่: CREATE TABLE dbo.ProofDetails ( ProofDetailsID int NOT NULL CONSTRAINT PK_ProofDetails PRIMARY KEY CLUSTERED IDENTITY(1,1) , ProofID int NULL , IDShownToUser int NULL , UserViewedDetails bit NOT NULL CONSTRAINT DF_ProofDetails_UserViewedDetails DEFAULT ((0)) ); ตารางนี้มี 150,000,000 แถว ระบบกำลังทำงาน 24x7x365 ดังนั้นจึงไม่มีหน้าต่างการบำรุงรักษาที่เกิดขึ้นเป็นประจำ ฉันต้องการเพิ่มดัชนีลงในตารางและด้วย Enterprise Edition ของ SQL Server ฉันควรจะทำเช่นนั้นได้โดยไม่ปิดกั้นการเข้าถึงการเขียนลงในตาราง คำสั่งที่ฉันใช้คือ: CREATE INDEX IX_ProofDetails_ProofID_Etc …

5
มี DBMS ที่อนุญาตให้ใช้ Foreign Key ที่อ้างอิงมุมมอง (และไม่เพียง แต่ตารางพื้นฐาน)?
แรงบันดาลใจจากการสร้างแบบจำลองคำถาม Django: การสร้างแบบจำลองฐานข้อมูลที่มีความสัมพันธ์หลายต่อหลายหลายใน Django การออกแบบ db เป็นสิ่งที่ชอบ: CREATE TABLE Book ( BookID INT NOT NULL , BookTitle VARCHAR(200) NOT NULL , PRIMARY KEY (BookID) ) ; CREATE TABLE Tag ( TagID INT NOT NULL , TagName VARCHAR(50) NOT NULL , PRIMARY KEY (TagID) ) ; CREATE TABLE BookTag ( BookID …

2
เกณฑ์การตัดสินใจว่าเมื่อใดควรใช้ schema ที่ไม่ใช่ dbo กับฐานข้อมูลใหม่
ฉันเป็นนักพัฒนาแอปพลิเคชั่นเป็นส่วนใหญ่ แต่พบว่าตัวเองต้องทำงานฐานข้อมูลล่วงหน้าทั้งหมดสำหรับโครงการปัจจุบันของฉัน ( btw ... MS SQL Server 2008 ) เป็นการตัดสินใจครั้งแรกฉันพยายามคิดว่าจะแบ่งสถานะของฉันโดยใช้ฐานข้อมูลแยกหรือใช้โครงสร้างของแยกในฐานข้อมูลเดียวกัน ฉันอ่าน SQL Server Schema เล็กน้อยและดูเหมือนว่าเป็นวิธีธรรมชาติในการแยกโดเมนวัตถุ ( ที่ฉันชอบ ) แต่ฉันไม่แน่ใจว่าอาจมีค่าใช้จ่ายแอบแฝงกับรูปแบบนี้ อะไรคือสิ่งที่ควรนำมาใช้ในการปฏิบัติมากขึ้นเมื่อเลือกระหว่างแนวทางทั้งสองนี้ หากฉันหลีกเลี่ยงการdbo.mytableสนับสนุนmyschema.mytableฉันจะสร้างความท้าทายอื่น ๆ ( หรือปัญหา ) สำหรับสถาปัตยกรรมของฉันหรือไม่ เป็นหมายเหตุด้านข้าง ... ณ จุดนี้จะถูกส่งไปยังDBA จริงเพื่อรักษา / สนับสนุนดังนั้นฉันพยายามทำให้แน่ใจว่าฉันจะไม่ทำให้ชีวิตของพวกเขายากขึ้น

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

4
ให้สิทธิ์ในการเรียกใช้งานเซิร์ฟเวอร์ SQL
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีงานบนเซิร์ฟเวอร์ MSSQL 2005 ของฉันที่ฉันต้องการอนุญาตให้ผู้ใช้ฐานข้อมูลใด ๆ ทำงาน ฉันไม่กังวลเกี่ยวกับความปลอดภัยเนื่องจากอินพุตของงานจริงมาจากตารางฐานข้อมูล เพียงแค่เรียกใช้งานโดยไม่ต้องเพิ่มบันทึกลงในตารางนั้นจะไม่ทำอะไรเลย ฉันไม่สามารถหาวิธีอนุญาตสิทธิ์สาธารณะให้กับงานได้ มีวิธีการทำเช่นนี้? สิ่งเดียวที่ฉันสามารถคิดได้ ณ จุดนี้คือการให้งานทำงานอย่างต่อเนื่อง (หรือตามกำหนดเวลา) แต่เนื่องจากมันจำเป็นต้องทำงานจริง ๆ น้อย ๆ (บางทีทุกๆสองสามเดือน) และฉันต้องการให้งานเป็นจริง เสร็จสิ้นทันทีที่มีอยู่สิ่งนี้ดูเหมือนจะไม่เป็นทางออกที่ดีที่สุด

1
ข้อความ FlushCache ที่ปรากฏในบันทึกในเวลาที่กำหนด
เมื่อไม่นานมานี้เรามีปัญหาเกี่ยวกับประสิทธิภาพของฐานข้อมูลจำนวนมากและฉันพยายามที่จะดูว่าฉันสามารถหาสาเหตุได้หรือไม่ เราไม่มี DBA (ฉันเป็นผู้พัฒนาซอฟแวร์) ดังนั้นฉันจึงเป็นคนชักปีกและสิ่งที่ฉันพบว่าการอ่านออนไลน์เช่นภาษาต่างประเทศให้ฉัน เราได้รีสตาร์ท SQL Server ทุกเช้าเพราะนั่นเป็นวิธีเดียวที่จะเปิดให้บริการในระหว่างวันทำงาน ฉันสังเกตว่าทุกเช้าประมาณตี 5 เราเริ่มได้รับข้อความนี้ทุกสองนาทีในบันทึก: FlushCache: ทำความสะอาด 11848 bufs ด้วย 7432 เขียนใน 97168 ms (หลีกเลี่ยงสกปรก 8139 bufs ใหม่) สำหรับ db 9: 0 เป้าหมายสุดท้ายที่โดดเด่น: 4, avgWriteLatency 32 ปริมาณงานเฉลี่ย: 0.72 MB / วินาที, ความอิ่มตัวของ I / O: 11635, บริบทสวิตช์ 18849 ตัวเลขแตกต่างกันในแต่ละครั้งแน่นอน แต่มันเป็นข้อความเดียวกันซ้ำไปซ้ำมาในรูปแบบนั้นจนกว่าฉันจะรีสตาร์ทเซิร์ฟเวอร์ ฉันไม่แน่ใจว่าจะตีความสิ่งนี้อย่างไรฉันได้ลองใช้ Google เกี่ยวกับเรื่องนี้และสิ่งที่ฉันรวบรวมได้ทั้งหมดนั่นก็หมายความว่าอาจมีบางอย่างผิดปกติกับ …

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