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

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

6
Redgate SQL เปรียบเทียบกับโครงการฐานข้อมูลพรีเมียม / Ultimate ของ Visual Studio 2010
ฉันกำลังใช้Visual Studio Professional Editionซึ่งมีโครงการฐานข้อมูลเป็นแม่แบบโครงการ แต่บางส่วนของคุณลักษณะของมันจะไม่สามารถใช้ได้เช่นเครื่องมือ Schema เปรียบเทียบ การเปรียบเทียบสคีและฐานข้อมูลการปรับปรุงสคริปต์รุ่นนี้ใช้ได้เฉพาะในภาพรุ่น Studio 2010 พรีเมี่ยม / ดีที่สุด แต่การเปรียบเทียบสกีมาและการอัปเดตคุณลักษณะการสร้างสคริปต์ใน Visual Studio มีความสมบูรณ์เท่ากับในเครื่องมือ Redgate SQL Compareหรือไม่ (ฉันไม่ได้ใช้ด้วย) ฉันไม่ได้จัดการเพื่อค้นหารายการเปรียบเทียบคุณสมบัติ ใครบ้างที่ใช้ทั้งคู่ช่วยกันทำให้ชัดเจนขึ้นได้ไหม

2
มีความแตกต่างที่มีตัวตนระหว่างดัชนีคลัสเตอร์ที่ไม่ซ้ำกันและคีย์หลักที่คลัสเตอร์หรือไม่
ฉันเข้าใจว่าอาจมีความแตกต่างในความหมายหรือเจตนาระหว่างทั้งสอง แต่มีความแตกต่างด้านพฤติกรรมหรือประสิทธิภาพระหว่างคีย์หลักที่คลัสเตอร์และดัชนีที่ไม่ซ้ำกันหรือไม่

4
มีประโยชน์ใด ๆ ของคีย์หลักที่ประกอบด้วยคอลัมน์ทั้งหมดของตารางหรือไม่
ฉันมีตารางที่มีสี่คอลัมน์ที่ไม่เป็นโมฆะและข้อมูลเป็นเช่นนั้นทั้งสี่จำเป็นต้องแยกแยะระเบียนที่ไม่ซ้ำกัน หมายความว่าถ้าฉันจะสร้างคีย์หลักมันจะต้องประกอบด้วยคอลัมน์ทั้งหมด การค้นหาเทียบกับตารางเกือบทุกครั้งที่จะดึงระเบียนเดียวเช่นคอลัมน์ทั้งหมดจะถูกกรองในแบบสอบถาม เนื่องจากทุกคอลัมน์จะต้องทำการค้นหาการมีคีย์หลักมีประโยชน์กับฉันหรือไม่ (นอกจากบังคับให้มีการบันทึกที่ไม่ซ้ำกัน)?

7
การสำรวจเป็นวิธีเดียวในการอัปเดตข้อมูลแอปจากฐานข้อมูลหรือไม่
แอปพลิเคชันต้องมีข้อมูลที่อัปเดตใหม่จากฐานข้อมูลมากที่สุดเท่าที่จะทำได้ ในกรณีเช่นนี้มีวิธีอื่นในการรับข้อมูลนอกเหนือจากการจับเวลาตามขอ (สำรวจ) ฐานข้อมูลหรือไม่ ฉันทำงานกับ MS SQL Server 2008 (และ. NET applications + Entity Framework) แต่ฉันต้องการรับรู้เกี่ยวกับฐานข้อมูลประเภทอื่นเช่นกัน

3
ฐานข้อมูลอื่นใดที่มีคุณสมบัติคล้ายกับ Flashback Query ของ Oracle
ฉันสนใจที่จะรู้ว่าสิ่งที่ฐานข้อมูลอื่น ๆ มีคุณสมบัติคล้ายกับของออราเคิลรำลึกความหลังแบบสอบถาม ดูเหมือนว่าฐานข้อมูลใด ๆ ที่รองรับMVCCอาจมีคุณสมบัติ แต่จะทำอย่างไร ดังนั้นมีคำถามนี้สำหรับ SQL Serverแต่ดูเหมือนว่าเหมาะสมกว่าที่นี่

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

2
CROSS ใช้ผลิตการรวมภายนอก
เพื่อเป็นการตอบสนองต่อการนับ SQL ที่แตกต่างกันบนพาร์ติชัน Erik Darling โพสต์รหัสนี้เพื่อหลีกเลี่ยงการขาดCOUNT(DISTINCT) OVER (): SELECT * FROM #MyTable AS mt CROSS APPLY ( SELECT COUNT(DISTINCT mt2.Col_B) AS dc FROM #MyTable AS mt2 WHERE mt2.Col_A = mt.Col_A -- GROUP BY mt2.Col_A ) AS ca; แบบสอบถามใช้CROSS APPLY(ไม่OUTER APPLY) ดังนั้นเหตุใดจึงมีการรวมภายนอกในแผนการดำเนินการแทนการเข้าร่วมภายใน ทำไมการไม่แสดงความคิดเห็นกลุ่มโดยประโยคส่งผลให้เข้าร่วมภายใน? ฉันไม่คิดว่าข้อมูลมีความสำคัญ แต่คัดลอกจาก kevinwhat จากคำถามอื่น: create table #MyTable ( …

5
สถาปัตยกรรมดัชนีที่เหมาะสมคืออะไรเมื่อถูกบังคับให้ใช้ IsDeleted (การลบแบบอ่อน)?
ขณะนี้เรามีฐานข้อมูลและแอปพลิเคชันที่มีอยู่ซึ่งทำงานได้อย่างสมบูรณ์ ฉันไม่มีความสามารถในการเปลี่ยนสถาปัตยกรรม ณ จุดนี้ วันนี้แต่ละตารางในฐานข้อมูลมีฟิลด์ "IsDeleted" NOT NULL BIT ที่มีค่าเริ่มต้นเป็น '0' เมื่อแอปพลิเคชัน "ลบ" ข้อมูลมันเพียงอัปเดตการตั้งค่าสถานะ IsDeleted เป็น 1 สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือดัชนีของแต่ละตารางควรมีโครงสร้างอย่างไร ตอนนี้ทุกแบบสอบถาม / เข้าร่วม / ฯลฯ จะดำเนินการตรวจสอบ IsDeleted เป็นมาตรฐานที่นักพัฒนาของเราต้องปฏิบัติตาม ที่ถูกกล่าวว่าฉันพยายามที่จะตรวจสอบว่าดัชนีคีย์หลักคลัสเตอร์ทั้งหมดของฉันในแต่ละตารางจะต้องมีการเปลี่ยนแปลงเพื่อให้รวมถึงคีย์หลักและฟิลด์ BIT IsDeleted นอกจากนี้เนื่องจากทุกแบบสอบถาม / เข้าร่วม / ฯลฯ ต้องใช้การตรวจสอบ IsDeleted เป็นข้อสมมติฐานที่เหมาะสมหรือไม่ที่ดัชนีทุกเดียว (ไม่ใช่คลัสเตอร์ด้วย) ควรรวมเขตข้อมูล IsDeleted เป็นเขตข้อมูลแรกของดัชนีหรือไม่ อีกคำถามหนึ่งที่ฉันมีคือดัชนีรอบตัวกรอง ฉันเข้าใจว่าฉันสามารถใส่ตัวกรองในดัชนีเช่น "WHERE IsDeleted = 0" เพื่อลดขนาดของดัชนี อย่างไรก็ตามเนื่องจากการเข้าร่วม / …

1
SELECT TOP 1 จากตารางที่มีขนาดใหญ่มากในคอลัมน์ดัชนีนั้นช้ามาก แต่ไม่ใช่ด้วยลำดับย้อนกลับ (“ desc”)
เรามีฐานข้อมูลขนาดใหญ่ประมาณ 1TB ใช้ SQL Server 2014 บนเซิร์ฟเวอร์ที่ทรงพลัง ทุกอย่างทำงานได้ดีไม่กี่ปี ประมาณ 2 สัปดาห์ที่ผ่านมาเราทำการบำรุงรักษาอย่างสมบูรณ์ซึ่งรวมถึง: ติดตั้งอัปเดตซอฟต์แวร์ทั้งหมด สร้างดัชนีและไฟล์ฐานข้อมูลขนาดกะทัดรัดทั้งหมด อย่างไรก็ตามเราไม่ได้คาดหวังว่าในบางช่วงการใช้งาน CPU ของ DB จะเพิ่มขึ้นมากกว่า 100% เป็น 150% เมื่อการโหลดจริงเหมือนกัน หลังจากการแก้ไขปัญหาจำนวนมากเราได้ จำกัด ให้แคบลงเป็นคำถามที่ง่ายมาก แต่เราไม่พบวิธีแก้ปัญหา การสืบค้นนั้นง่ายมาก: select top 1 EventID from EventLog with (nolock) order by EventID ใช้เวลาประมาณ 1.5 วินาทีเสมอ! อย่างไรก็ตามเคียวรีที่คล้ายกันที่มี "desc" จะใช้เวลาประมาณ 0 ms: select top 1 EventID …

7
ดัชนีคอมโพสิต: คอลัมน์เลือกมากที่สุดก่อน?
ฉันกำลังอ่านเกี่ยวกับcomposite indexesและฉันสับสนเล็กน้อยเกี่ยวกับการสั่งซื้อ เอกสารนี้ (น้อยกว่าครึ่งทางเล็กน้อย) พูดว่า โดยทั่วไปคุณควรใส่คอลัมน์ที่คาดว่าจะใช้บ่อยที่สุดเป็นอันดับแรกในดัชนี อย่างไรก็ตามหลังจากนั้นไม่นานมันก็บอกว่า สร้างดัชนีคอมโพสิตวางคอลัมน์ที่เลือกมากที่สุดก่อน นั่นคือคอลัมน์ที่มีค่ามากที่สุด ออราเคิลยังกล่าวว่าที่นี่ในคำอื่น ๆ หากคีย์ทั้งหมดถูกใช้ใน WHERE clauses บ่อยเท่ากันดังนั้นการสั่งซื้อคีย์เหล่านี้จากการเลือกส่วนใหญ่ไปจนถึงการเลือกอย่างน้อยที่สุดในคำสั่ง CREATE INDEX จะช่วยปรับปรุงประสิทธิภาพการสืบค้นได้ดีที่สุด อย่างไรก็ตามฉันพบคำตอบ SOที่บอกว่าต่างออกไป มันบอกว่า จัดเรียงคอลัมน์ด้วยคอลัมน์ที่เลือกน้อยที่สุดก่อนและคอลัมน์ที่เลือกมากที่สุดเป็นลำดับสุดท้าย ในกรณีของการผูกเน็คไทกับคอลัมน์ซึ่งมีแนวโน้มที่จะใช้ด้วยตนเอง เอกสารแรกที่ฉันอ้างถึงบอกว่าคุณควรใช้งานบ่อยที่สุดในขณะที่คำตอบ SO บอกว่าควรจะใช้สำหรับการผูกไทเท่านั้น จากนั้นพวกเขายังแตกต่างกันในการสั่งซื้อ นี้เอกสารยังพูดถึงเกี่ยวกับskip scanningและบอกว่า การสแกนข้ามมีประโยชน์ถ้ามีค่าที่แตกต่างกันเล็กน้อยในคอลัมน์นำของดัชนีคอมโพสิตและค่าที่แตกต่างจำนวนมากในคีย์ที่ไม่เรียงลำดับชั้นของดัชนี บทความอื่นพูดว่า คอลัมน์คำนำหน้าควรเป็นการเลือกปฏิบัติมากที่สุดและใช้กันอย่างแพร่หลายในการสืบค้น ซึ่งฉันเชื่อว่าการเลือกปฏิบัติส่วนใหญ่จะมีความโดดเด่นที่สุด งานวิจัยทั้งหมดนี้ยังนำฉันไปสู่คำถามเดียวกัน คอลัมน์ที่เลือกมากที่สุดควรเป็นคอลัมน์แรกหรือสุดท้าย ควรเลือกคอลัมน์แรกที่มีการใช้งานมากที่สุดและมีเฉพาะคอลัมน์ที่เลือกมากที่สุดเท่านั้น? บทความเหล่านี้ดูเหมือนจะขัดแย้งกัน แต่เสนอตัวอย่างบางส่วน จากสิ่งที่ผมได้รวบรวมดูเหมือนว่าจะมีประสิทธิภาพมากขึ้นสำหรับผู้least selective columnที่จะเป็นครั้งแรกIndex Skip Scansในการสั่งซื้อถ้าคุณกำลังที่คาดการณ์ไว้ แต่ฉันไม่แน่ใจว่าถูกต้องหรือไม่

1
Postgres: SET NOT NULL เป็นอย่างไร "มีประสิทธิภาพมากขึ้น" กว่าข้อ จำกัด การตรวจสอบ
ในเอกสาร PostgreSQL สำหรับข้อ จำกัดกล่าวว่า ข้อ จำกัด แบบไม่เป็นโมฆะเทียบเท่ากับการสร้างข้อ จำกัด การตรวจสอบCHECK (column_name IS NOT NULL)แต่ใน PostgreSQL การสร้างข้อ จำกัด แบบไม่เป็นโมฆะอย่างชัดเจนนั้นมีประสิทธิภาพมากกว่า ฉันสงสัย "มีประสิทธิภาพมากขึ้น" หมายความว่าอย่างไร สิ่งที่เป็นอันตรายของการใช้งานCHECK (column_name IS NOT NULL)แทนSET NOT NULL? ฉันต้องการเพิ่มNOT VALID CHECKข้อ จำกัด และตรวจสอบความถูกต้องแยกต่างหาก (ดังนั้นAccessExclusiveLockจะถูกเก็บไว้ในช่วงเวลาสั้น ๆ เท่านั้นสำหรับการเพิ่มข้อ จำกัด และจากนั้น a ShareUpdateExclusiveLockจะถูกเก็บไว้สำหรับขั้นตอนการตรวจสอบที่ยาวขึ้น): ALTER TABLE table_name ADD CONSTRAINT column_constraint CHECK (column_name IS NOT NULL) …

1
การรันเคียวรีขนาดใหญ่บนฐานข้อมูลรองในกลุ่มความพร้อมใช้งานจะส่งผลต่อประสิทธิภาพของธุรกรรมในฐานข้อมูลหลักหรือไม่
ฉันต้องการให้ข้อมูลตามเวลาจริงหรือเกือบตามเวลาจริงสำหรับการรายงาน SSRS และ Tableau ฉันไม่ต้องการให้ระบบ OLTP ที่ใช้ในการผลิตได้รับผลกระทบทางลบจากการสืบค้นที่ใช้เวลานาน การรันเคียวรีขนาดใหญ่บนฐานข้อมูลรองในกลุ่มความพร้อมใช้งานจะส่งผลต่อประสิทธิภาพของธุรกรรมในฐานข้อมูลหลักหรือไม่

2
การปรับใช้ความสัมพันธ์แบบหลายต่อหลายคนกับข้อ จำกัด การมีส่วนร่วมโดยรวมใน SQL
ฉันควรนำไปใช้ใน SQL สถานการณ์ที่อธิบายไว้ในแผนภาพความสัมพันธ์ของเอ็นติตี้ต่อไปนี้อย่างไร? ในขณะที่มันจะแสดงทุกAประเภทกิจการที่เกิดขึ้นจะต้องเกี่ยวข้องกับอย่างน้อยหนึ่ง Bคู่ (แสดงโดยเส้นเชื่อมต่อคู่) และในทางกลับกัน ฉันรู้ว่าฉันควรสร้างสามตารางที่ตามมา: CREATE TABLE A ( a INT NOT NULL, CONSTRAINT A_PK PRIMARY KEY (a) ); CREATE TABLE B ( b INT NOT NULL, CONSTRAINT B_PK PRIMARY KEY (b) ); CREATE TABLE R ( a INT NOT NULL, b INT NOT NULL, CONSTRAINT R_PK …

1
การตั้งชื่อความขัดแย้งระหว่างฟังก์ชั่นพารามิเตอร์และผลลัพธ์ของการเข้าร่วมกับการใช้ข้อ
รับการตั้งค่านี้ใน Postgres ปัจจุบัน 9.4 ( จากคำถามที่เกี่ยวข้อง ): CREATE TABLE foo (ts, foo) AS VALUES (1, 'A') -- int, text , (7, 'B'); CREATE TABLE bar (ts, bar) AS VALUES (3, 'C') , (5, 'D') , (9, 'E'); นอกจากนี้ยังมีซอ Fiddleจากคำถามก่อนหน้านี้ ฉันเขียนSELECTด้วยFULL JOINเพื่อให้บรรลุวัตถุประสงค์ของคำถามอ้างอิง ย่อ: SELECT ts, f.foo, b.bar FROM foo f FULL …

3
วิธีการบันทึกแบบสอบถาม MySQL ทั้งหมดลงในไฟล์บันทึกได้อย่างไร
ฉันใช้ Mysql 5.6.12 ภายใต้สภาพแวดล้อมเซิร์ฟเวอร์ Wamp ตอนนี้ฉันต้องการบันทึกคำค้นหาทั้งหมดลงในไฟล์ ".log" ข้อความค้นหาที่เรียกใช้โดย PHP หรือจาก PHPMyAdmin ฉันต้องการบันทึกข้อความเหล่านี้ ...
17 mysql  log 

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