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

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

4
การจัดการกับ CXPACKET รอ - ตั้งค่าขีด จำกัด ต้นทุนสำหรับการขนาน
จากการติดตามคำถามก่อนหน้านี้เกี่ยวกับการแก้ไขปัญหาเว็บไซต์ SharePointอย่างสมบูรณ์ฉันสงสัยว่าฉันสามารถทำบางสิ่งเกี่ยวกับ CXPACKET ได้หรือไม่ ฉันรู้ว่าวิธีแก้ปัญหาข้อเข่ากระตุกคือการปิดความขนานทั้งหมดโดยการตั้งค่า MAXDOP เป็น 1 - ฟังดูเหมือนเป็นความคิดที่ไม่ดี แต่แนวคิดอื่นคือการเพิ่มเกณฑ์ต้นทุนก่อนที่จะเริ่มขนานกันเริ่มต้นที่ 5 สำหรับต้นทุนของแผนการดำเนินการค่อนข้างต่ำ ดังนั้นฉันจึงสงสัยว่ามีคำถามที่เขียนไว้แล้วว่าจะพบคำค้นหาที่มีค่าใช้จ่ายแผนปฏิบัติการสูงที่สุด (ฉันรู้ว่าคุณสามารถค้นหาสิ่งที่มีระยะเวลาดำเนินการสูงสุดและอื่น ๆ ได้) แต่เป็นต้นทุนแผนปฏิบัติการที่เรียกคืนได้ ด้วยหรือไม่) และนั่นก็จะบอกฉันด้วยว่ามีการดำเนินการค้นหาแบบขนานหรือไม่ ใครบ้างมีสคริปต์ดังกล่าวในมือหรือสามารถชี้ให้ฉันไปในทิศทางของมุมมอง DMV, DMF หรือแคตตาล็อกระบบอื่น ๆ ที่เกี่ยวข้องเพื่อค้นหาสิ่งนี้?

3
ขนาดฐานข้อมูลเริ่มต้นของ PostgreSQL
คำถามของฉันมี 2 ส่วน มีวิธีการระบุขนาดเริ่มต้นของฐานข้อมูลใน PostgreSQL หรือไม่? หากไม่มีคุณจะจัดการกับการแตกแฟรกเมนต์อย่างไรเมื่อฐานข้อมูลเติบโตขึ้นตามกาลเวลา ฉันเพิ่งย้ายจาก MSSQL ไปยัง Postgres และหนึ่งในสิ่งที่เราทำในโลก MSSQL เมื่อสร้างฐานข้อมูลคือการระบุขนาดเริ่มต้นของฐานข้อมูลและบันทึกธุรกรรม การกระจายตัวที่ลดลงนี้และประสิทธิภาพที่เพิ่มขึ้นโดยเฉพาะอย่างยิ่งถ้าขนาด "ปกติ" ของฐานข้อมูลเป็นที่รู้จักกันล่วงหน้า ประสิทธิภาพของฐานข้อมูลของฉันลดลงตามขนาดที่เพิ่มขึ้น ตัวอย่างเช่นปริมาณงานที่ฉันวางผ่านตามปกติใช้เวลา 10 นาที เมื่อฐานข้อมูลเติบโตขึ้นเวลานี้จะเพิ่มขึ้น การทำ VACUUM, VACUUM FULL และ VACUUM FULL ANALYZE ไม่ปรากฏขึ้นเพื่อแก้ไขปัญหา สิ่งที่แก้ปัญหาด้านประสิทธิภาพคือการหยุดฐานข้อมูลแยกส่วนไดรฟ์แล้วทำการ VACUUM FULL ANALYZE ใช้เวลาทดสอบประสิทธิภาพของฉันกลับไปเป็น 10 นาทีเดิม สิ่งนี้ทำให้ฉันสงสัยว่าการแตกออกเป็นส่วน ๆ คือสิ่งที่ทำให้ฉันเจ็บปวด ฉันไม่สามารถค้นหาการอ้างอิงถึงการจองพื้นที่ตาราง / ฐานข้อมูลใน Postgres ได้ ฉันกำลังใช้คำศัพท์ที่ไม่ถูกต้องและไม่พบสิ่งใดเลยหรือมีวิธีอื่นในการลดการแตกแฟรกเมนต์ของระบบไฟล์ใน Postgres ตัวชี้ใด ๆ …

3
ทำไมคำสั่งซื้อของฉันเรียงลำดับสองตารางก่อนยกเว้น (ช้า) และไม่ใช่หลัง (เร็ว)
ปริศนาตัวเพิ่มประสิทธิภาพการสืบค้น SQL Server 2008 R2 เรามีสองตารางทั้งสองมี 9 ล้านแถว 70,000 แถวนั้นแตกต่างกันแถวอื่นจะเหมือนกัน อย่างรวดเร็ว 13 วินาที select * from bigtable1 except select * from similar_bigtable2 นี่จะเรียงลำดับเอาต์พุตและยังรวดเร็ว 13 วินาทีเช่นกัน select * into #q from bigtable1 except select * from similar_bigtable2 select * from #q order by sort_column ในขณะนี้ช้ามาก: ;with q as ( select * …

2
การเพิ่มพื้นที่ว่างในดิสก์หลังจากฐานข้อมูลตก
ฉันกำลังทำงานกับระบบ dev และฉันได้รับการกู้คืนไปยังฐานข้อมูลพูดว่า "foo" ซึ่งฉันใช้เพื่อจุดประสงค์ด้านการพัฒนา ขณะที่ฉันกำลังทำงานผ่าน kinks ฉันเพิ่งเรียกใช้ DROP DATABASE foo อย่างไรก็ตามฉันรู้ได้อย่างรวดเร็วว่าฉันกินพื้นที่ทั้งหมดในดิสก์ของฉัน อึ. VACUUM FULL จากฐานข้อมูลแบบลอจิคัลอื่นหรือไม่เพิ่มพื้นที่ว่างจากฐานข้อมูลที่ฉันทิ้งไว้ก่อนหน้านี้ (foo) ฉันลองสิ่งนี้จากฐานข้อมูลเชิงตรรกะที่แตกต่างกันและมีการเรียกคืนพื้นที่ว่าง แต่ฉันไม่คิดว่ามันเพียงพอที่จะอธิบายการเรียกฐานข้อมูล CREATE DATABASE / DROP DATABASE ทั้งหมดที่ฉันทำ มันอาจมีเพียง VACUUM'ed ฐานข้อมูลเชิงตรรกะที่ฉันวิ่งมา จะต้องมีวิธีในการเรียกคืนพื้นที่นั้นโดยไม่ต้องดำเนินการฐานข้อมูลทั้งหมดหรือไม่ แก้ไข ดังนั้นผมจึง reinitialized ฐานข้อมูลจากการสำรองข้อมูลประมาณต่อไปนี้ขั้นตอนเหล่านี้ หลังจากการคืนค่าฉันได้เรียกคืนพื้นที่ว่างบนดิสก์เป็นตัน! วิธีนี้ใช้ได้ผลในตอนนี้ แต่ความช่วยเหลือใด ๆ เกี่ยวกับวิธีล้างฐานข้อมูลที่ถูกทิ้งจะยังคงมีประโยชน์ แก้ไข 2 ดังนั้นฉันจึงพยายามรวบรวมข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ ... นี่คือสิ่งที่ฉันคิดขึ้นมาเป็นตัวอย่าง: Initial partition size: Size Used Avail Use% …


1
ปิดใช้งานคอมมิชชันที่ชัดเจนใน JDBC ตรวจจับใน SQL หรือทำให้ฐานข้อมูลอยู่ในสถานะอ่านอย่างเดียว
พื้นหลัง : ฉันกำลังทำงานในhttp://sqlfiddle.com (เว็บไซต์ของฉัน) และกำลังพยายามป้องกันไม่ให้มีการละเมิดวิธีใดวิธีหนึ่ง ฉันหวังว่าด้วยการถามเกี่ยวกับปัญหาที่ฉันกำลังพูดถึงอยู่ในปัจจุบันฉันไม่ได้ตั้งใจทำให้การละเมิดที่อาจเกิดขึ้นแย่ลงโดยไม่ได้ตั้งใจ แต่คุณจะทำอย่างไร ฉันเชื่อใจพวกคุณ ฉันต้องการป้องกันไม่ให้ผู้ใช้ออกการเรียก 'ส่งสัญญาณ' อย่างชัดเจนภายในบล็อคธุรกรรม จากบริบทของ SQL Fiddle บล็อกธุรกรรมคือรหัสที่เรียกใช้งานบนแผงด้านขวา โดยทั่วไปฉันจะวนซ้ำและดำเนินการรายการคำสั่ง plaintext SQL และฉันต้องการให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่ทำจะถูกย้อนกลับในตอนท้ายของแบทช์ โดยปกติการเปลี่ยนแปลงของพวกเขาจะได้รับการย้อนกลับ แต่บางครั้งก็มีคำสั่ง 'กระทำ' ที่ชัดเจนภายในข้อความและแน่นอนว่าการย้อนกลับของฉันจะไม่ทำงาน ความมุ่งมั่นที่ชัดเจนนี้มีแนวโน้มมากจากผู้ใช้ที่พยายามจะทำลาย schema บน SQL Fiddle ดังนั้นคนอื่น ๆ ที่ทำงานกับมันจะเห็นข้อผิดพลาด ผลลัพธ์หลักที่ต้องการ : ฉันต้องการปิดใช้งานการกระทำที่ชัดเจนในระดับ JDBC ถ้าเป็นไปได้ นี่เป็นเพราะฉันต้องสนับสนุนผู้ขายแบ็กเอนด์ฐานข้อมูลหลายคนและแน่นอนว่าแต่ละคนมีนิสัยใจคอในระดับต่ำ ตัวเลือกสำรอง : หากไม่สามารถกำหนดค่า JDBC เพื่อปิดใช้งานการกระทำที่ชัดเจนได้ฉันจะเปิดให้มีการตรวจหาการกระทำที่ชัดเจนในขณะประมวลผลชุดข้อมูลสำหรับแบ็กเอนด์ต่อไปนี้: SQL Server, Oracle, MySQL และ PostgreSQL สำหรับ SQL …


2
ใช้กรณีเดียวกันเมื่อเงื่อนไขสำหรับคอลัมน์แบบสอบถามจำนวนมาก
มีวิธี "ดีกว่า" ในการเขียนSELECTประโยคใหม่ที่มีคอลัมน์จำนวนมากใช้CASE WHENเงื่อนไขเดียวกันเพื่อให้มีการตรวจสอบเงื่อนไขเพียงครั้งเดียวหรือไม่ ดูตัวอย่างด้านล่าง SELECT CASE testStatus WHEN 'A' THEN 'Authorized' WHEN 'C' THEN 'Completed' WHEN 'P' THEN 'In Progress' WHEN 'X' THEN 'Cancelled' END AS Status, CASE testStatus WHEN 'A' THEN authTime WHEN 'C' THEN cmplTime WHEN 'P' THEN strtTime WHEN 'X' THEN cancTime END AS lastEventTime, CASE …

4
ฉันสามารถส่งออกแผนการบำรุงรักษาโดยไม่ใช้ Integration Services ได้หรือไม่
ฉันกำลังพยายามส่งออกแผนการบำรุงรักษาอย่างง่ายจากอินสแตนซ์ SQL Server ฉันต้องการตรวจสอบการส่งออกไปยังตัวควบคุมแหล่งที่มาและใช้แผนการบำรุงรักษาที่ส่งออกกับอินสแตนซ์ที่เหมือนกันตามหน้าที่ แนะนำให้ใช้StackOverflowและSQL Server สำหรับ Integration Services เพื่อส่งออกแผนการบำรุงรักษา เมื่อฉันพยายามเชื่อมต่อกับ Integration Services ในเป้าหมายการส่งออกฉันได้รับข้อผิดพลาดต่อไปนี้: การเชื่อมต่อกับบริการการรวมบริการบนคอมพิวเตอร์ "WEBSERVER" ล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: บริการที่ระบุไม่มีอยู่เป็นบริการที่ติดตั้ง เราเลือกที่จะปิดการใช้งานบริการรวมใน WEBSERVER เพราะเราใช้กล่องนี้เฉพาะสำหรับการให้บริการข้อมูลแก่แอปพลิเคชันผู้บริโภค ข้อมูลทั้งหมดใน WEBSERVER ถูกจำลองแบบจากอินสแตนซ์ส่วนหลัง บริการการรวมถูกใช้อย่างมากสำหรับการประมวลผลข้อมูลในอินสแตนซ์แบ็กเอนด์ มีวิธีการจัดทำเอกสารเพื่อส่งออกแผนการบำรุงรักษาโดยไม่ใช้ Integration Services หรือไม่ Microsoft สนับสนุนหรือไม่

2
บิตกับคอลัมน์บูลีน
เนื่องจากบิตฟิลด์นั้นเป็นเพียงการแสดงข้อมูลแบบไบนารี่และจำเป็นต้องทำการสอบถามในลักษณะที่ "แปลก" เล็กน้อย จริง ๆ แล้วมันให้ประโยชน์ใด ๆ โดยใช้เขตข้อมูลบิตสำหรับค่าบูลีนหรือไม่ จากสิ่งที่ฉันเห็นมันดูเหมือนว่าจะแนะนำว่าพื้นที่นั้นเป็นผลประโยชน์ที่แท้จริงเท่านั้น

2
PHP -> การเชื่อมต่อแบบต่อเนื่องของ Mysql ยังไม่มี mysql_pconnect - เป็นไปได้ไหม
ฉันพยายามหาวิธีที่ดีในการทำสิ่งนี้มาระยะหนึ่งแล้ว แต่มีเวลายากที่จะหาชิ้นส่วนที่เหมาะสมในการทำเช่นนี้ ฉันเดาว่าสิ่งนี้จะต้องเป็นไปได้ หากต้องการกล่าวอย่างง่าย ๆ นี่คือสิ่งที่ฉันต้องการจะทำให้สำเร็จ: PHP / Other front end -> [SOCKET] -> Locally hosted 'pooler' -> [Pool of persistent TCP/IP connection(s)]-> Externally hosted MySQLD มีเครื่องมือ / วิธีการทำสิ่งต่าง ๆ อยู่หรือไม่? เราต้องการใช้การเชื่อมต่อ mysql แบบคงที่โดยไม่ต้องใช้ mysql_pconnect ฉันถามด้วยความเคารพว่าเราไม่ได้เริ่มพูดคุยเกี่ยวกับวิธีการเชื่อมต่อแบบถาวรไม่จำเป็น ฯลฯ พวกเขาเป็น เราหมดพอร์ต TIME_WAIT และมีปัญหาอื่น ๆ ซึ่งจะแก้ไขได้หากระบบประเภทนี้ถูกนำไปใช้ ดังนั้นใช่เพื่อสรุป ... เราจะใช้ poolq การเชื่อมต่อ mysql ที่ซ็อกเก็ตตามปลายท้องถิ่นและยังคงเชื่อมต่อที่ทำกับ …
12 mysql 

3
เหตุใดแบบสอบถามรวมจึงเร็วขึ้นอย่างมากเมื่อใช้ GROUP BY clause มากกว่าไม่มี
ฉันแค่อยากรู้ว่าเหตุใดแบบสอบถามโดยรวมจึงทำงานเร็วขึ้นมากโดยมีGROUP BYประโยคมากกว่าไม่มี ตัวอย่างเช่นแบบสอบถามนี้ใช้เวลาเกือบ 10 วินาทีในการเรียกใช้ SELECT MIN(CreatedDate) FROM MyTable WHERE SomeIndexedValue = 1 ในขณะนี้อันนี้ใช้เวลาน้อยกว่าหนึ่งวินาที SELECT MIN(CreatedDate) FROM MyTable WHERE SomeIndexedValue = 1 GROUP BY CreatedDate มีเพียงหนึ่งเดียวCreatedDateในกรณีนี้ดังนั้นคิวรีที่จัดกลุ่มจะส่งคืนผลลัพธ์เดียวกับกลุ่มที่ไม่ได้จัดกลุ่ม ฉันสังเกตเห็นแผนการดำเนินการสำหรับแบบสอบถามที่สองจะแตกต่างกัน - แบบสอบถามที่สองใช้ Parallelism ในขณะที่แบบสอบถามแรกไม่ เป็นเรื่องปกติหรือไม่ที่เซิร์ฟเวอร์ SQL จะประเมินคิวรีแบบรวมแตกต่างกันถ้ามันไม่มี GROUP BY clause? และมีสิ่งที่ฉันสามารถทำได้เพื่อปรับปรุงประสิทธิภาพของแบบสอบถามที่ 1 โดยไม่ต้องใช้GROUP BYคำสั่งหรือไม่ แก้ไข ฉันเพิ่งเรียนรู้ว่าฉันสามารถใช้OPTION(querytraceon 8649)ในการตั้งค่าใช้จ่ายค่าใช้จ่ายของความเท่าเทียมเป็น 0 ซึ่งทำให้แบบสอบถามใช้ความเท่าเทียมและลดรันไทม์เป็น 2 วินาทีแม้ว่าฉันจะไม่รู้ว่ามีข้อเสียในการใช้คำใบ้แบบสอบถามนี้หรือไม่ SELECT MIN(CreatedDate) …

2
SQL Server ที่เก็บข้อมูลของ TinyInt
ใน SQL Server เหตุใดจึงมีขนาดเล็กเก็บไว้กับ 9B ในแถว ด้วยเหตุผลบางอย่างดูเหมือนว่าจะมีหนึ่งไบต์เพิ่มเติมในตอนท้ายของรูปแบบบิตแมป NULL ใช้ tempdb; ไป สร้างตาราง tbl ( ฉัน TINYINT ไม่เป็นโมฆะ ); ไป ใส่เข้าไปใน tbl (i) ค่า (1); ไป DBCC IND ('tempdb', 'tbl', - 1); ไป TRACEON DBCC (3604); - ดัมพ์เพจจะไปที่คอนโซล ไป หน้า DBCC ('tempdb', 1,168,3); ไป ผลลัพธ์ (ฉันย้อนกลับไบต์เนื่องจากหน้า DBCC แสดงไบต์ที่สำคัญน้อยที่สุดก่อน): Record Size = …

5
การออกแบบฐานข้อมูลแบบสำรวจ: เชื่อมโยงคำตอบกับผู้ใช้
ฉันทำแบบจำลองแนวคิดสำหรับฐานข้อมูลการสำรวจ เป้าหมายคือเก็บคำตอบที่ได้รับจากผู้ใช้ (มันจะเป็นแอพ Android) ฉันมีสามเอนทิตี: ผู้ใช้คำถามและตัวเลือก คำถามจะมีหนึ่งหรือมากกว่าหนึ่งตัวเลือก (ตัวอย่างเช่น: คุณมีพนักงานกี่คนมี? 1-40, 40-1000, 1000) ตัวเลือกจะมีข้อความ (1-40) และค่า (ค่าที่เลือกโดยผู้ใช้) ผู้ใช้จะเลือกหนึ่งตัวเลือก (หรือมากกว่า) ของตัวเลือกเหล่านี้ แนวคิดการออกแบบของฉันคือ: ฉันไม่ทราบวิธีเชื่อมโยงคำตอบกับผู้ใช้ ฉันจะแสดงความสัมพันธ์นั้นได้อย่างไร ฉันมีเอนทิตีอื่นเพื่อแทนค่าตัวเลือกหรือไม่ รุ่นนี้จะเก็บคำถามและคำตอบล่วงหน้า (คำตอบที่เสนอ) และอนุญาตให้ใช้ซ้ำในแบบสำรวจต่างๆ ฉันต้องแสดงคำถามเช่นนี้: คำถามนี้เกี่ยวข้องกับคำถามนี้: การออกแบบฐานข้อมูลแบบสำรวจ: เวอร์ชันแรก มีข้อผิดพลาดหรือไม่?

1
SQL Server DBA จำเป็นต้องรู้อะไรเกี่ยวกับ Windows Server
คล้ายกับคำถามก่อนหน้าของฉันDBA รู้อะไรเกี่ยวกับ SSAS ซึ่งสร้างคำตอบที่ยอดเยี่ยมจริงๆ (ขอบคุณ @ConcernedOfTunbridgeWells!) ตอนนี้ฉันถามคำถามที่คล้ายกัน: SQL Server DBA จำเป็นต้องรู้อะไรเกี่ยวกับ Windows Server เพื่อให้สามารถจัดการได้อย่างมีประสิทธิภาพและเข้าใจสิ่งที่เกิดขึ้นเบื้องหลังและระดับใดเป็นสิ่งสำคัญที่ต้องทราบระบบปฏิบัติการพื้นฐานที่ SQL Server ทำงานเพื่อ การเป็น DBA ที่ยอดเยี่ยม มันอาจเป็นคุณสมบัติส่วนบุคคลหนังสือจากประสบการณ์คุณตั้งชื่อมัน!

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