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

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

3
ฉันสามารถกำหนดค่าเริ่มต้นสำหรับการเข้าร่วมด้านนอกด้านซ้ายได้หรือไม่
สมมติว่าฉันมีตาราง a (พร้อมคอลัมน์ a1) และ b (กับคอลัมน์ b1 และ b2) และฉันดำเนินการเข้าร่วมด้านนอกด้านซ้าย SELECT * FROM a LEFT OUTER JOIN b ON a.a1 = b.b1 จากนั้น b1 และ b2 จะเป็น NULL โดยที่ค่า a1 ไม่มีค่าที่ตรงกันของ b1 ฉันสามารถให้ค่าเริ่มต้นสำหรับ b2 แทน NULL ได้หรือไม่? หมายเหตุที่เชื่อมต่อกันจะไม่ทำงานที่นี่เพราะผมไม่ต้องการให้ค่าเริ่มต้นที่จะแทนที่ NULLs ศักยภาพใน B2 ที่มีเป็นค่าของการจับคู่ a1 b1 นั่นคือด้วยและ a เป็น CREATE TABLE …
21 postgresql  join 

4
วิธีเข้าร่วมสองตารางเพื่อให้หายไปแถวในตารางที่สอง
ในระบบการลงคะแนนแบบง่าย ๆ เช่น CREATE TABLE elections ( election_id int(11) NOT NULL AUTO_INCREMENT, title varchar(255), CREATE TABLE votes ( election_id int(11), user_id int(11), FOREIGN KEYs สำหรับการรับรายชื่อผู้มีสิทธิเลือกตั้งผู้ใช้ JOIN ต่อไปนี้จะถูกใช้ SELECT * FROM elections JOIN votes USING(election_id) WHERE votes.user_id='x' แต่จะได้รับรายชื่อการเลือกตั้งที่ผู้ใช้ไม่ได้ลงคะแนนได้อย่างไร
21 join  select 

1
คีย์หลักพร้อมตัวเลือก“ ไม่ใช่สำหรับการจำลอง”
ฉันเพิ่งเข้าร่วมโครงการและฉันได้ค้นพบว่าในตารางส่วนใหญ่คีย์หลักมีคุณสมบัติ " NOT FOR REPLICATION" ฉันไม่ใช่ DBA แต่แน่นอนในฐานข้อมูลส่วนใหญ่ระเบียนที่ไม่มีคีย์หลักจะถือว่าเสียหาย คีย์หลักของบันทึกเหล่านี้ส่วนใหญ่จะถูกใช้เป็นคีย์ต่างประเทศอย่างแน่นอน นี่เป็นข้อผิดพลาดในส่วนของนักพัฒนาก่อนหน้า (ที่ไม่ได้ทำงานให้กับ บริษัท อีกต่อไป) หรือมีตรรกะอื่น ๆ ที่เกี่ยวข้องหรือไม่? เราไม่ได้ใช้การจำลองแบบในสภาพแวดล้อมการผลิตดังนั้นนี่จะไม่ส่งผลกระทบต่ออะไรที่ร้ายแรงอยู่ดี แต่ฉันสงสัยว่ามีผลข้างเคียงอื่น ๆ จากการลบคำสั่งเหล่านี้ทั้งหมดที่ฉันไม่ทราบ ฉันไม่พบเพลงฮิตที่มีประโยชน์มากมายสำหรับคำค้นหาจำนวนหนึ่งที่เกี่ยวข้องกับหัวข้อนี้ดังนั้นฉันค่อนข้างมั่นใจว่านี่เป็นเพียงข้อผิดพลาดที่ฉันต้องย้อนกลับดังนั้นคำถามนี้เป็นคำถามที่ทำให้หวาดระแวงของฉันจริงๆ

3
ค้นหาคำจำกัดความของมุมมองที่ปรากฏใน Postgres
ฉันสงสัยว่าจะค้นหาคำจำกัดความของมุมมองที่ปรากฏใน Postgres ได้อย่างไร สำหรับการอ้างอิงสิ่งที่ฉันหวังว่าจะทำนั้นคล้ายกับสิ่งที่คุณสามารถทำได้สำหรับมุมมองปกติ: SELECT * FROM information_schema.views WHERE table_name = 'some_view'; ซึ่งให้คอลัมน์ต่อไปนี้แก่คุณ: table_catalog table_schema table_name view_definition check_option is_updatable is_insertable_into is_trigger_updatable is_trigger_deletable is_trigger_insertable_into สิ่งนี้เป็นไปได้หรือไม่สำหรับมุมมองที่ปรากฏขึ้น จากการวิจัยของฉันจนถึงขณะนี้ปรากฏว่ามุมมองที่เป็นรูปธรรมได้รับการยกเว้นโดยเจตนาจาก information_schema เพราะ information_schema สามารถแสดงวัตถุที่มีอยู่ในมาตรฐาน SQL เท่านั้น ( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us ) เนื่องจากดูเหมือนว่าพวกเขาจะถูกแยกออกจาก information_schema ทั้งหมดฉันไม่แน่ใจว่าจะทำอย่างไร แต่สิ่งที่ฉันต้องการทำคือทวีคูณ: สอบถามว่ามีมุมมองที่ปรากฏขึ้นโดยเฉพาะหรือไม่ (จนถึงตอนนี้วิธีเดียวที่ฉันพบว่าทำคือลองสร้างมุมมอง mat ด้วยชื่อเดียวกันและดูว่ามันระเบิดขึ้นหรือไม่) จากนั้นสอบถามคำจำกัดความของมุมมองที่ปรากฏขึ้น (คล้ายกับview_definitionคอลัมน์บนinformation_schema.views)

2
“ Recheck Cond:” บรรทัดในแผนคิวรีพร้อมการสแกนดัชนีบิตแมป
นี่คือการแยกความคิดเห็นจากคำถามก่อนหน้า: Postgres 9.4.4 แบบสอบถามใช้เวลาตลอดไป ใช้ PostgreSQL 9.4 มีเสมอดูเหมือนว่าจะเป็นสายหลังจากสแกนดัชนีบิตแมปในการส่งออกแผนแบบสอบถามโดยRecheck Cond:EXPLAIN กดไลค์ในEXPLAINผลลัพธ์ของคำถามอ้างอิง: -> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() …

1
ความหมายของตัวกรองใน MySQL อธิบายคืออะไร?
ตามที่อธิบายไว้ในเอกสาร MySQL : คอลัมน์ที่กรองจะระบุเปอร์เซ็นต์ของแถวของตารางโดยประมาณที่จะถูกกรองตามเงื่อนไขของตาราง นั่นคือแถวแสดงจำนวนแถวที่ตรวจสอบโดยประมาณและแถวที่กรอง× / 100 แสดงจำนวนแถวที่จะเข้าร่วมกับตารางก่อนหน้า ก่อน MySQL 5.7.3 คอลัมน์นี้จะปรากฏขึ้นหากคุณใช้ EXPLAIN EXTENDED ในฐานะของ MySQL 5.7.3 เอาต์พุตที่ขยายเพิ่มจะถูกเปิดใช้งานโดยค่าเริ่มต้นและคำหลัก EXTENDED นั้นไม่จำเป็น ฉันยังไม่เข้าใจ ความหมายของ "ตัวกรอง" ที่นี่คืออะไร? เราจะได้ข้อมูลอะไรจากคอลัมน์นี้? ตัวอย่างเช่นเมื่อฉันเริ่มสอบถามบางแบบสอบถามจะแสดง 100 และบางคนแสดง 18 หรือต่ำกว่า 100 +-------------+-------+--------+---------+---------+------+----------+ | select_type | table | type | key | key_len | rows | filtered | +-------------+-------+--------+---------+---------+------+----------+ | PRIMARY …

4
เป็นไปได้ไหมที่จะติดตั้ง mongo Shell?
ฉันติดตั้ง Docker แล้วและกำลังใช้งานMongoDBคอนเทนเนอร์เพื่อการพัฒนาในเครื่องของฉันบน Mac ปัญหาคือฉันไม่สามารถเชื่อมต่อกับฐานข้อมูลดังกล่าวได้อย่างง่ายดายจาก CLI ฉันติดตั้งRobo 3Tแล้วแต่ฉันต้องการใช้งานCLIไคลเอนต์แทน มีวิธีที่รู้จักในการติดตั้งเพียงแค่mongo shell(คำสั่งmongo) และไม่ใช่การกระจายฐานข้อมูลเต็มรูปแบบใน OS X หรือไม่?
21 mongodb  mac-os-x 

1
คุณเปิดใช้งานการแคชชุดผลลัพธ์ของ SQL Server 2019 อย่างไร
SQL Server 2019 CTP 2.3 ได้เพิ่มคอลัมน์ใหม่สองสามคอลัมน์ลงใน sys.database รวมถึง is_result_set_caching_on: มันไม่ได้ทำเป็นเอกสารในมีอะไรใหม่ใน SQL Server 2019หรือในหน้าเปลี่ยนแปลงฐานข้อมูล ฉันพยายามใช้ไวยากรณ์เดียวกันกับการกู้คืนฐานข้อมูลแบบเร่งความเร็วสำหรับการหัวเราะ: ALTER DATABASE StackOverflow2013 SET RESULT_SET_CACHING ON; แต่ไม่มีโชค: Msg 5058, Level 16, State 12, Line 8 Option 'RESULT_SET_CACHING' cannot be set in database 'StackOverflow2013'.

5
ความยืดหยุ่นในการขัดข้องของ SQL Server สามารถปรับปรุงได้หรือไม่
เรามีพีซีที่ใช้ SQL Server (2008 SP4 และ 2016 SP1) ซึ่งสูญเสียพลังงานเป็นประจำ เห็นได้ชัดว่าบางครั้งสิ่งนี้นำไปสู่ความเสียหาย (ดัชนี) ของฐานข้อมูล SQL Server ซึ่งเราจำเป็นต้องกู้คืนหลังจากนั้น ฉันทราบว่า SQL Server ไม่ได้ออกแบบมาสำหรับสถานการณ์ดังกล่าวและวิธีการแก้ไขที่ถูกต้องคือการแก้ไขสาเหตุของการสูญเสียพลังงาน (เพิ่มเติมที่ด้านล่างถ้าคุณอยากรู้) อย่างไรก็ตามมีตัวเลือกการปรับแต่งใด ๆ ใน SQL Server ที่ฉันสามารถตั้งค่าเพื่อลดความเสี่ยงของความเสียหายของฐานข้อมูลจากการสูญเสียพลังงานหรือไม่? พื้นหลัง: "พีซี" เป็นแท็บเล็ต Windows ที่ติดตั้งบนรถยก เมื่อผู้ใช้ปิดรถยกแท็บเล็ตจะสูญเสียพลังงาน เราได้พยายามสอนให้ผู้ใช้ปิด Windows อย่างถูกต้องก่อนที่จะปิดรถยก แต่ล้มเหลว (อาจเป็นเพราะการปิด "งาน" เกือบตลอดเวลา) ขณะนี้เรากำลังตรวจสอบตัวเลือกอื่น ๆ เช่นการเพิ่ม UPS ซึ่งส่งสัญญาณแท็บเล็ตเพื่อปิดการสูญเสียพลังงาน
20 sql-server  crash 

3
ชุดข้อมูลเชิงพื้นที่ขนาดใหญ่ (> 22 ล้านล้านรายการ) พร้อมประสิทธิภาพการสืบค้นอย่างรวดเร็ว (<1s)
ฉันอยู่ในกระบวนการออกแบบระบบใหม่สำหรับชุดข้อมูลเชิงพื้นที่ขนาดใหญ่ที่ต้องการประสิทธิภาพการสืบค้นอย่างรวดเร็ว ดังนั้นฉันต้องการดูว่าใครคิดว่าเป็นไปได้หรือมีประสบการณ์ / คำแนะนำเกี่ยวกับ DBMSs ที่เหมาะสมโครงสร้างข้อมูลหรือวิธีการทางเลือกเพื่อให้ได้ประสิทธิภาพตามที่ต้องการในสถานการณ์ต่อไปนี้: ข้อมูลจะถูกผลิตอย่างต่อเนื่องจากข้อมูลเรดาร์ดาวเทียมที่ผ่านการประมวลผลซึ่งจะครอบคลุมทั่วโลก จากความละเอียดของดาวเทียมและพื้นที่ครอบคลุมของโลกฉันประเมินชุดข้อมูลทั้งหมดเพื่อสร้างมูลค่าที่ 75 พันล้านตำแหน่งโดยสิ้นเชิงในโลก ตลอดช่วงชีวิตของดาวเทียมดวงเดียวเอาต์พุตจะสร้างค่าได้สูงสุด 300 ค่าในแต่ละตำแหน่งเหล่านี้ (ดังนั้นชุดข้อมูลทั้งหมดที่มีค่า&gt; 22 ล้านล้านค่า) นี่เป็นดาวเทียมหนึ่งดวงและมีวงโคจรอยู่หนึ่งวินาทีและอีกสองวางแผนในไม่กี่ปีใหม่ ดังนั้นจะมีข้อมูลจำนวนมาก! รายการข้อมูลเดียวนั้นง่ายมากและจะประกอบไปด้วย (ลองจิจูด, ค่าละติจูด, ค่า) แต่เนื่องจากจำนวนรายการที่ฉันประเมินดาวเทียมหนึ่งดวงเพื่อผลิตสูงสุด 100TB ข้อมูลที่เป็นลายลักษณ์อักษรไม่ควรต้องมีการอัพเดทเนื่องจากจะเพิ่มขึ้นเมื่อมีการดำเนินการจัดหาดาวเทียมใหม่ ประสิทธิภาพการเขียนไม่สำคัญ แต่ประสิทธิภาพการอ่านมีความสำคัญ เป้าหมายของโครงการนี้คือเพื่อให้สามารถมองเห็นข้อมูลผ่านอินเทอร์เฟซแบบง่ายเช่นเลเยอร์เหนือแผนที่ google ซึ่งแต่ละจุดมีค่าสีตามค่าเฉลี่ยการไล่ระดับสีหรือฟังก์ชันบางช่วงเวลา (สาธิตที่ส่วนท้ายของโพสต์) จากข้อกำหนดเหล่านี้ฐานข้อมูลจะต้องสามารถปรับขนาดได้และเรามีแนวโน้มที่จะมองหาโซลูชั่นระบบคลาวด์ ระบบจะต้องสามารถจัดการกับข้อความค้นหาเชิงพื้นที่เช่น "points near (lat, lon)" และ "points within (box)" และมีประสิทธิภาพการอ่าน &lt;1s สำหรับการหาจุดเดียวและรูปหลายเหลี่ยมที่มีถึง 50,000 คะแนน (ถึง 200,000 คะแนนน่าจะดีกว่า) จนถึงตอนนี้ฉันมีชุดข้อมูลทดสอบ …

2
เหตุใดผู้ดำเนินการเชื่อมต่อจึงประมาณค่าแถวน้อยกว่าอินพุต
ในตัวอย่างแบบสอบถามแผนต่อไปนี้ดูเหมือนว่าชัดเจนว่าการประมาณแถวสำหรับConcatenationผู้ประกอบการควรเป็น~4.3 billion rowsหรือผลรวมของแถวประมาณการสำหรับสองอินพุต อย่างไรก็ตามมีการประมาณค่าการ~238 million rowsผลิตซึ่งนำไปสู่การเพิ่มประสิทธิภาพย่อยSort/ Stream Aggregateกลยุทธ์ที่กระจายข้อมูลหลายร้อย GB ไปยัง tempdb การประมาณที่สอดคล้องกันอย่างมีเหตุผลในกรณีนี้จะทำให้เกิด a Hash Aggregateลบการรั่วไหลและเพิ่มประสิทธิภาพของแบบสอบถาม นี่เป็นข้อบกพร่องใน SQL Server 2014 หรือไม่ มีสถานการณ์ที่ถูกต้องหรือไม่ที่การประมาณการต่ำกว่าอินพุทอาจมีเหตุผลหรือไม่? วิธีแก้ไขปัญหาใดบ้างที่อาจมีอยู่ นี่คือแผนแบบสอบถามเต็มรูปแบบ (ไม่ระบุชื่อ) ฉันไม่สามารถดูแลระบบเข้าถึงเซิร์ฟเวอร์นี้เพื่อให้เอาต์พุตจากQUERYTRACEON 2363หรือแฟล็กการติดตามที่คล้ายกัน แต่อาจสามารถรับเอาต์พุตเหล่านี้จากผู้ดูแลระบบหากพวกเขาจะเป็นประโยชน์ ฐานข้อมูลอยู่ในระดับความเข้ากันได้ 120 ดังนั้นจึงใช้เครื่องมือประมาณการ Cardinality ใหม่ของ SQL Server 2014 สถิติจะถูกอัพเดตด้วยตนเองทุกครั้งที่มีการโหลดข้อมูล เมื่อพิจารณาจากปริมาณข้อมูลเรากำลังใช้อัตราการสุ่มตัวอย่างเริ่มต้น เป็นไปได้ว่าอัตราการสุ่มตัวอย่างที่สูงขึ้น (หรือFULLSCAN) อาจมีผลกระทบ

1
ทำไมการค้นหา LIKE N '% %' ตรงกับอักขระ Unicode ใด ๆ และ = N' 'ตรงกับหลาย ๆ
DECLARE @T TABLE( Col NCHAR(1)); INSERT INTO @T VALUES (N'A'), (N'B'), (N'C'), (N'Ƕ'), (N'Ƿ'), (N'Ǹ'); SELECT * FROM @T WHERE Col LIKE N'%�%' ผลตอบแทน Col A B C Ƕ Ƿ Ǹ SELECT * FROM @T WHERE Col = N'�' ผลตอบแทน Col Ƕ Ƿ Ǹ การสร้าง "ตัวอักษร" สองไบต์ที่เป็นไปได้ทั้งหมดด้วยด้านล่างแสดงให้เห็นว่า=รุ่นตรงกับ 21,229 ของพวกเขาและLIKE N'%�%'รุ่นทั้งหมดของพวกเขา …

2
คำค้นหาที่ไม่มีแผนเพียงพอที่ดี
ฉันมีฐานข้อมูล SQL Server 2012 ผมสังเกตเห็นค่าของสำหรับการค้นหาบางอย่างและทั้งหมดให้Reason for early termination of statement optimization Good Enough Plan Foundตอนนี้คำถามของฉันคือ: ประเภทใดบ้างที่เป็นไปได้ของ“ เหตุผลในการยกเลิกการปรับให้เหมาะสมที่สุดในช่วงต้น” ฉันค้นหาสิ่งนี้เป็น msdn แต่ไม่ได้รับรายการค่าทั้งหมด มี DMV หรือเหตุการณ์เพิ่มเติมเพื่อแสดงรายการคำค้นหาทั้งหมดที่การเพิ่มประสิทธิภาพถูกยกเลิกเนื่องจากเหตุผลอื่นนอกเหนือจาก Good Enough Plan Found หรือไม่ ฉันอ้างอิงบทความสองบทความต่อไปนี้ซึ่งไม่ได้แสดงรายการความเป็นไปได้ทั้งหมด [พวกเขายังให้ผลลัพธ์ที่แตกต่างในฐานข้อมูลของฉันด้วย] การค้นหา: หมดเวลาการรวบรวมข้อความค้นหา การระบุแผนการสืบค้นที่ไม่ดีพอ

1
SQL Server - การจัดการการแปลสตริงในที่ซ้อนกันแบบ non-deterministic
ในขณะทำโปรไฟล์ฐานข้อมูลฉันพบว่ามีการอ้างอิงฟังก์ชั่นที่ไม่ได้กำหนดค่าบางอย่างที่เข้าถึง1,000-2500 ครั้งต่อนาทีสำหรับการเชื่อมต่อแต่ละครั้งในแอพพลิเคชั่นนี้ วิSELECTจากมุมมองทำให้แผนการดำเนินการต่อไปนี้: ดูเหมือนว่าแผนซับซ้อนสำหรับมุมมองที่มีน้อยกว่าหนึ่งพันแถวที่อาจเห็นการเปลี่ยนแปลงหนึ่งหรือสองแถวทุกสองสามเดือน แต่มันก็แย่ลงด้วยการปฏิบัติอื่น ๆ ดังต่อไปนี้: มุมมองแบบซ้อนไม่สามารถกำหนดค่าได้ดังนั้นเราจึงไม่สามารถจัดทำดัชนีได้ แต่ละมุมมองอ้างอิงหลายUDFs เพื่อสร้างสตริง UDF แต่ละอันประกอบด้วยUDFs ที่ซ้อนกันเพื่อรับรหัส ISO สำหรับภาษาที่แปลเป็นภาษาท้องถิ่น ผู้ชมในกองกำลังใช้เพิ่มเติมสร้างสตริงกลับมาจากUDFการเป็นJOINภาค มุมมองสแต็กแต่ละครั้งจะถือว่าเป็นตารางหมายความว่ามีINSERT/ UPDATE/ DELETEทริกเกอร์ในแต่ละเพื่อเขียนไปยังตารางพื้นฐาน ทริกเกอร์เหล่านี้ในมุมมองใช้CURSORSว่าEXECวิธีการจัดเก็บที่อ้างอิงมากกว่านี้สตริงสร้างUDFs ดูเหมือนว่าฉันจะเน่าเสีย แต่ฉันมีประสบการณ์กับ TSQL เพียงไม่กี่ปี มันจะดีขึ้นเช่นกัน! ดูเหมือนนักพัฒนาที่ตัดสินใจว่านี่เป็นความคิดที่ยอดเยี่ยมทำทั้งหมดนี้เพื่อให้สตริงสองสามร้อยรายการที่เก็บไว้สามารถมีการแปลตามสตริงที่ส่งคืนจากสตริงUDFนั้นเป็นแบบเฉพาะสคีมา นี่คือหนึ่งในมุมมองในสแต็ก แต่ทั้งหมดนั้นไม่ดีเท่ากัน: CREATE VIEW [UserWKStringI18N] AS SELECT b.WKType, b.WKIndex , CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.I18NString ELSE il.I18nString END AS WKString ,CASE …

4
คำแนะนำในการวินิจฉัยแบบสอบถามที่ช้า“ บางครั้ง”
ฉันมีกระบวนงานที่เก็บไว้ซึ่งส่งคืนผลลัพธ์จากมุมมองที่จัดทำดัชนีผ่านดัชนีครอบคลุม โดยปกติแล้วจะทำงานเร็ว (~ 10ms) บางครั้งสามารถทำงานได้ถึง 8 วินาที นี่คือตัวอย่างการดำเนินการแบบสุ่ม (หมายเหตุ: นี่ไม่ใช่แบบช้า แต่ข้อความค้นหาจะเหมือนกันนอกเหนือจากค่าที่ส่งผ่าน): declare @p2 dbo.IdentityType insert into @p2 values(5710955) insert into @p2 values(5710896) insert into @p2 values(5710678) insert into @p2 values(5710871) insert into @p2 values(5711103) insert into @p2 values(6215197) insert into @p2 values(5710780) exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2 นี่คือ SPROC: ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus] …

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