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

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

2
ฉันจะใช้การค้นหาข้อความแบบเต็มในคอลัมน์ jsonb กับ Postgres ได้อย่างไร
ดังนั้นฉันจึงมีjsonbคอลัมน์ที่มีรายการเช่นนี้: https://pastebin.com/LxJ8rKk4 มีวิธีใดบ้างที่จะใช้การค้นหาข้อความแบบเต็มในคอลัมน์ jsonb ทั้งหมด?

1
Nest Loop vs. Hash ที่ไม่พึงประสงค์เข้าร่วมใน PostgreSQL 9.6
ฉันมีปัญหากับการวางแผนการสืบค้น PostgreSQL 9.6 ข้อความค้นหาของฉันมีลักษณะเช่นนี้: SET role plain_user; SELECT properties.* FROM properties JOIN entries_properties ON properties.id = entries_properties.property_id JOIN structures ON structures.id = entries_properties.entry_id WHERE structures."STRUKTURBERICHT" != '' AND properties."COMPOSITION" LIKE 'Mo%' AND ( properties."NAME" LIKE '%VASP-ase-preopt%' OR properties."CALCULATOR_ID" IN (7,22,25) ) AND properties."TYPE_ID" IN (6) ฉันเปิดใช้งานการรักษาความปลอดภัยระดับแถวสำหรับตารางที่ใช้งานอยู่ด้านบน ด้วยset enable_nestloop = Trueตัววางแผนคิวรีรัน …

1
Postgresql เปิดใช้งานส่วนขยายที่ไม่มีผู้ใช้ขั้นสูง
ฉันมีเซิร์ฟเวอร์ PostgreSQL 9.5 ซึ่งฉันมีสคริปต์ที่สร้างบทบาทและฐานข้อมูลสำหรับผู้ใช้โดยอัตโนมัติ ภายในฐานข้อมูลเหล่านี้ก็จะเป็นประโยชน์ในการเปิดใช้ส่วนขยายที่เฉพาะเจาะจง (เช่น pgcrypto) แต่ที่ผมเข้าใจหนึ่งจะต้อง superuser CREATE EXTENSIONการทำงาน มีวิธีการเปิดใช้งานส่วนขยายดังกล่าวโดยไม่ต้องลงชื่อเข้าใช้ด้วยตนเองด้วยบัญชี superuser หรือไม่?

4
ค้นหาเพื่อนบ้านที่ใกล้ที่สุดอย่างรวดเร็วในพื้นที่ 150 มิติ
ฉันต้องการสร้างฐานข้อมูลโดยใช้ RDBMS ที่เป็นไปได้ มันจะมีตารางที่มีประมาณ 150 คอลัมน์ มีวัตถุประสงค์เพื่อทำการค้นหาเพื่อนบ้านที่ใกล้ที่สุดของวัตถุอื่น ๆ มันคือ NNS ในพื้นที่ 150 มิติ ฉันพยายามใช้วิธีที่ชัดเจนบางอย่างเช่นระยะทาง L1 หรือ L2 แต่แน่นอนว่าต้องใช้เวลานานสำหรับตารางที่มีหลายแถว ฉันพยายามลองดู KD-tree (หมายเหตุฉันไม่ได้ทดสอบ) และ PG-Strom แต่มันไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับข้อมูลที่มีหลายมิติ ฉันสามารถปรับปรุงความเร็วของการค้นหาที่อธิบายโดยใช้วิธีการทางคณิตศาสตร์ (เช่น KD-tree) หรือวิธีการทางเทคโนโลยี (เช่น PG-Strom) ได้หรือไม่? ฉันจะพยายามใช้ RDBMS ใด ๆ ที่อนุญาตให้ปรับปรุงความเร็วของ NNS แต่ MySQL และ PostgreSQL นั้นเป็น DBMS ที่เหมาะสมที่สุดสำหรับฉัน

2
เหตุใดจึงไม่สามารถแทรกแถวใน CTE ไม่สามารถอัปเดตในคำสั่งเดียวกันได้
ใน PostgreSQL 9.5 ให้สร้างตารางง่ายๆด้วย: create table tbl ( id serial primary key, val integer ); ฉันเรียกใช้ SQL เพื่อแทรกค่าจากนั้นอัปเดตในคำสั่งเดียวกัน: WITH newval AS ( INSERT INTO tbl(val) VALUES (1) RETURNING id ) UPDATE tbl SET val=2 FROM newval WHERE tbl.id=newval.id; ผลลัพธ์คือ UPDATE ถูกละเว้น: testdb=> select * from tbl; ┌────┬─────┐ │ id │ …
13 postgresql  cte 

2
งานติดค้างในสตูดิโอการจัดการคุณจัดการกับพวกเขาอย่างไร
หลังจากคลิกที่ "ใช้ฐานข้อมูลออฟไลน์" ในสตูดิโอการจัดการข้อความนี้จะยังคงอยู่และจะไม่ปิดถ้าคุณคลิกที่ปิด เป็นวิธีที่ดีในการจัดการกับงานค้างเช่นนี้ในสตูดิโอการจัดการอะไร คุณสามารถฆ่าพวกเขาผ่านการตรวจสอบกิจกรรมได้หรือไม่? ฉันควรหากระบวนการที่จะหยุดงานนี้จากการผ่านและยุติมันได้หรือไม่
13 sql-server  ssms 

2
วิธีการสร้างแบบจำลองข้อมูลที่ดีที่สุดเพื่อจัดการกับคีย์ต่างประเทศที่ซ้ำซ้อนในฐานข้อมูลเกี่ยวกับแบบสำรวจคำถามและคำตอบ
ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีการสร้างแบบจำลองเชิงสัมพันธ์ที่ดีที่สุดในการจัดเก็บแบบสอบถามคำถามและคำตอบ ฉันกำลังมองหาวิธีใดวิธีหนึ่งจากสองวิธีด้านล่างนี้ดูดีที่สุดหรือเป็นทางเลือกอื่นสำหรับทั้งสองวิธี ฉันมีเอนทิตีเหล่านี้อย่างน้อย: คำถาม สำรวจ คน และอย่างน้อยความสัมพันธ์เหล่านี้: แบบสำรวจแต่ละแบบมีคำถาม 1 ข้อขึ้นไป คำถามแต่ละข้ออาจใช้ในการสำรวจ 0 ครั้งขึ้นไป แต่ละคนอาจทำการสำรวจ 0 ครั้งขึ้นไป ที่นี่ฉันเจอปัญหา: วิธีจำลองแบบการตอบสนองต่อคำถามสำรวจโดยบุคคล ต่อไปนี้เป็นสองวิธีที่ฉันได้พิจารณาซึ่งไม่ได้ดูดีสำหรับฉันเลย ไดอะแกรมที่นี่เรียบง่ายเป็นอย่างมากเพื่อแสดงให้เห็นปัญหา วิธีที่ 1: สิ่งที่ฉันไม่ชอบเกี่ยวกับวิธีการนี้: survey_person_question_responseตารางมีสองคอลัมน์ที่แตกต่างกันที่อ้างถึงการสำรวจ: survey_question_survey_idและsurvey_person_survey_id มันจะเป็นข้อผิดพลาดที่มีsurvey_idการอ้างอิงที่แตกต่างกันในหนึ่งแถวสำหรับสองคอลัมน์นี้ Survey_question จะต้องมาจากแบบสำรวจเดียวกับคนที่เข้าร่วมใน survey_person ฉันไม่เห็นวิธีที่ดีในการบังคับใช้ ดูเหมือนว่าสิ่งที่ฉันทำที่นี่คือการสร้างความสัมพันธ์ระหว่างสองความสัมพันธ์ นั่นทำให้ฉันรู้สึกผิดด้วยเหตุผลบางอย่าง วิธีที่ 2: พยายามหลีกเลี่ยงสอง FKs จากวิธีที่ 1 ที่ควรอ้างอิงถึงค่าเดียวกัน ... สิ่งที่ฉันไม่ชอบเกี่ยวกับวิธีการนี้: ไม่มีการบังคับใช้ว่าquestion_idและsurvey_idFK นั้นมาจากsurvey_questionคู่ที่ถูกต้อง ไม่มีการบังคับใช้ว่าsurvey_idและperson_idFK นั้นมาจากsurvey_personคู่ที่ถูกต้อง คำแนะนำใด ๆ เกี่ยวกับ: ไม่ว่าหนึ่งในวิธีการเหล่านี้เป็นวิธีการทั่วไปหรือไม่ ข้อดีข้อเสียของหนึ่งในวิธีการเหล่านี้มากกว่าที่อื่น …

3
ค้นหา 100x ช้าลงใน SQL Server 2014 แถว Row Spool ประมาณผู้ร้ายหรือไม่
ฉันมีแบบสอบถามที่วิ่งใน800 มิลลิวินาทีใน SQL Server 2012และใช้เวลาประมาณ170 วินาทีใน SQL Server 2014 ฉันคิดว่าฉันได้ จำกัด เรื่องนี้ให้แคบลงเพื่อประเมินความน่าจะเป็นของRow Count Spoolผู้ให้บริการ ฉันได้อ่านเกี่ยวกับตัวดำเนินการสปูลแล้ว (เช่นที่นี่และที่นี่ ) แต่ฉันยังคงมีปัญหาในการทำความเข้าใจบางสิ่ง: เหตุใดแบบสอบถามนี้จึงต้องการRow Count Spoolผู้ดำเนินการ ฉันไม่คิดว่ามันจำเป็นสำหรับความถูกต้องดังนั้นสิ่งที่พยายามเพิ่มประสิทธิภาพโดยเฉพาะคืออะไร? เหตุใด SQL Server จึงประมาณว่าการเข้าร่วมกับRow Count Spoolผู้ดำเนินการลบแถวทั้งหมดออก นี่เป็นข้อบกพร่องใน SQL Server 2014 หรือไม่ ถ้าเป็นเช่นนั้นฉันจะยื่นในการเชื่อมต่อ แต่ฉันต้องการความเข้าใจที่ลึกซึ้งยิ่งขึ้นก่อน หมายเหตุ: ฉันสามารถเขียนแบบสอบถามอีกครั้งเป็นLEFT JOINหรือเพิ่มดัชนีลงในตารางเพื่อให้ได้ประสิทธิภาพที่ยอมรับได้ทั้งใน SQL Server 2012 และ SQL Server 2014 ดังนั้นคำถามนี้เกี่ยวกับการทำความเข้าใจแบบสอบถามเฉพาะและแผนในเชิงลึกมากขึ้น วิธีวลีที่ค้นหาแตกต่างกัน แบบสอบถามช้า ดูPastebin นี้สำหรับสคริปต์ทดสอบฉบับเต็ม …

4
จำนวนที่เหมาะสมที่สุดของอินสแตนซ์ MySQL InnoDB Buffer Pool
ลักษณะเซิร์ฟเวอร์ ระบบ RAM ทั้งหมด: 8GB (ใช้งาน MySQL + สิ่งอื่นนอกเหนือจาก MySQL ในนั้นคือไม่ได้ทุ่มเทให้กับ MySQL) จำนวนคอร์ CPU: 6 ฉันมีข้อมูลในฐานข้อมูลประมาณ 2GB ฉันมี InnoDB Buffer Pool Size ตั้งไว้ที่ 4GB ไหนดีกว่า: Innodb Buffer Pool Instances ตั้งค่าเป็น 1 Innodb Buffer Pool Instances ตั้งค่าเป็น 2 (2GB ในแต่ละ)? Innodb Buffer Pool Instances ตั้งค่าเป็น 4 (แต่ละ 1GB ในแต่ละ)? Innodb Buffer …

3
pg_restore: [archiver] ไม่พบสตริงมายากลในส่วนหัวของไฟล์
ฉันใช้ PostgreSQL 9.1 และต้องการกู้คืนไฟล์สำรองที่สร้างด้วยpg_dump: sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name คำสั่งนี้สร้างไฟล์ sql ที่ถูกต้องที่เริ่มต้นด้วยการปล่อยวัตถุฐานข้อมูลใด ๆ ที่มีอยู่จากนั้นสร้างตารางทั้งหมดบ่งบอกลำดับและอื่น ๆ และในที่สุดก็แทรกข้อมูล เมื่อฉันพยายามกู้คืนไฟล์สำรองที่สร้างด้วย: (เพิ่มตัวแบ่งบรรทัดเพื่อวัตถุประสงค์ในการแสดงผลเท่านั้น) sudo pg_restore -d database_name -h 127.0.0.1 -U postgres --format=c --clean --create out.sql มันล้มเหลวและพิมพ์: pg_restore: [archiver] did not find magic string in file header อะไรคือเหตุผลสำหรับสิ่งนั้น?

2
วิธีเพิ่มความเร็วในการเรียงลำดับโดยการเรียงลำดับเมื่อใช้ดัชนี GIN ใน PostgreSQL
ฉันมีโต๊ะแบบนี้: CREATE TABLE products ( id serial PRIMARY KEY, category_ids integer[], published boolean NOT NULL, score integer NOT NULL, title varchar NOT NULL); ผลิตภัณฑ์สามารถเป็นของหลายหมวดหมู่ category_idsคอลัมน์เก็บรายการรหัสประจำตัวของหมวดหมู่ผลิตภัณฑ์ทั้งหมด ข้อความค้นหาทั่วไปจะมีลักษณะดังนี้ (ค้นหาหมวดหมู่เดียวเสมอ): SELECT * FROM products WHERE published AND category_ids @> ARRAY[23465] ORDER BY score DESC, title LIMIT 20 OFFSET 8000; เพื่อเพิ่มความเร็วฉันใช้ดัชนีต่อไปนี้: CREATE INDEX idx_test1 …


2
มีการจัดการคีย์ auto_increment ใน INSERT อย่างไร (เลือก * จาก ... )
ฉันมีtable1และtable2ใน MySQL ทั้งสองมีหลักสำคัญauto_incrementid หากตาราง schemas ตรงกันและฉันจะINSERT INTO table1 (SELECT * FROM table2)เกิดอะไรขึ้นเกี่ยวกับแถวใหม่ที่แทรกเข้าไปtable1? พวกเขาเก็บidค่าเก่าของพวกเขาและสร้างความขัดแย้งเมื่อแถวจากtable1มีเหมือนกันidหรือไม่ ค่าใหม่ถูกสร้างขึ้นโดย auto_increment หรือไม่ มันขึ้นอยู่กับเครื่องมือจัดเก็บหรือล็อค?

4
SQL Server - ความแตกต่างระหว่างชื่ออินสแตนซ์และรหัสอินสแตนซ์
ฉันสับสนกับอินสแตนซ์ของ SQL Server เล็กน้อย ชื่ออินสแตนซ์และ ID อินสแตนซ์เป็นคุณสมบัติที่แตกต่างกัน แต่อินสแตนซ์ ID มีแนวโน้มที่จะเป็นค่าเริ่มต้นเป็นชื่ออินสแตนซ์ที่เป็นตัวพิมพ์ใหญ่ การติดตั้งช่วยให้คุณสามารถตั้งค่าต่าง ๆ สำหรับ ID ได้มากกว่าชื่อแม้ว่าโดยทั่วไปแล้วจะเหมือนกัน เห็นได้ชัดว่า ID หมายถึงการอ้างอิงภายในและชื่อหมายถึงการอ้างอิงที่ใช้งานง่าย แต่อะไรคือความแตกต่างพื้นฐานระหว่างสองสิ่งนี้? เมื่อใดจึงควรใช้มากกว่าอีกอัน ฉันต้องเข้าใจสิ่งนี้ในขณะที่ปรับใช้ / ติดตั้ง SQL Server 2008 R2 Express บนเครื่องเซิร์ฟเวอร์ของลูกค้าของเราจากกระบวนการติดตั้งแบบกำหนดเอง
13 sql-server 

2
PostgreSQL: วิธีแสดงรายการฟังก์ชั่นที่เก็บไว้ทั้งหมดที่เข้าถึงตารางเฉพาะ
บทนำ: ฐานข้อมูล PostgreSQL พร้อมฟังก์ชั่นการจัดเก็บหลายร้อยรายการรวมถึงล้าสมัยไม่ได้ใช้งาน ฯลฯ ปัญหา ฉันต้องการค้นหาฟังก์ชั่นที่เก็บไว้ทั้งหมดที่มีความสัมพันธ์กับตาราง X - เพราะฉันต้องการเปลี่ยนโครงสร้างตาราง บางคนอาจไม่ได้ใช้ดังนั้นฉันไม่สามารถทำได้เพียงแค่ดูรหัส โซลูชันที่ฉันมี ATM กำลังใช้งาน psql \df+และ grepping output แต่ฉันต้องการโซลูชันที่คล้ายกับฐานข้อมูลมากขึ้นเช่นโดยใช้ schema ของข้อมูล นี่จะเป็นงานซ้ำ ๆ แน่นอนและฉันต้องการให้มันดีและสะอาด ข้อเสนอแนะใด ๆ

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