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

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

3
ปัญหากับแบบสอบถามย่อย MySQL
ทำไมแบบสอบถามนี้ DELETE FROM test WHERE id = ( SELECT id FROM (SELECT * FROM test) temp ORDER BY RAND() LIMIT 1 ); บางครั้งลบ 1 แถวบางครั้ง 2 แถวและบางครั้งไม่มีอะไร ถ้าฉันเขียนมันในรูปแบบนี้: SET @var = ( SELECT id FROM (SELECT * FROM test) temp ORDER BY RAND() LIMIT 1 ); DELETE FROM test WHERE …
16 mysql 

3
เหตุใดการนำเข้าไฟล์. 12 GB .sql ใช้เวลานานกว่า 36 ชั่วโมง
ฉันรอแล้ว 36 ชั่วโมงเพื่อนำเข้าไฟล์. sql ขนาด 12 GB ด้วยtype site.sql | mysqlคำสั่งง่ายๆ ฉันสามารถเห็นการibdata1เติบโตยังคงอยู่ในขณะนี้เกือบ 40 GB เมื่อพิจารณาถึงทริกเกอร์และขั้นตอนการจัดเก็บอยู่ที่ส่วนท้ายของ. sql ฉันคิดว่า MySQL ควรเพิ่มข้อมูลและดัชนีสำคัญ site.sql ถูกสร้างโดยใช้คำสั่งนี้จากเซิร์ฟเวอร์อื่น: mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers ใช้เวลานานเท่าไหร่
16 mysql  mysql-5  mariadb 

3
วิธีแยกความแตกต่างระหว่าง SQL และ PL / SQL
ฉันรู้ว่าคำถามอาจฟังดูโง่เกินไป แต่ฉันไม่เคยเข้าใจส่วนนี้ SQL * Plus ทำงานได้กับทั้ง SQL และ PL / SQL ฉันจะรู้ได้อย่างไรว่าบางรหัสเป็น SQL หรือ PL / SQL หากรหัสของฉันมี for for loop จะไม่ใช้ SQL อีกต่อไปหรือไม่ PL / SQL เป็นส่วนเสริมสำหรับ SQL ที่จะมีลูปเงื่อนไข ฯลฯ จากนั้นรหัส SQL ใด ๆ คือรหัส PL / SQL เริ่มต้น? ไม่เป็นอย่างนั้นเหรอ? มีการแบ่งเขตระหว่าง SQL และ PL / SQL หรือไม่ ตัวอย่างที่สองของการแบ่งแยก b …

5
เหตุใดเธรด MySQL จึงแสดงสถานะ“ การเพิ่มรายการ” บ่อยครั้งเมื่อปิดคิวการสืบค้น
เมื่อฉันรันSHOW PROCESSLISTมักจะมีเธรด INSERT / UPDATE จำนวนมากในสถานะ "การปล่อยไอเท็ม" คู่มือ MySQL แสดงให้เห็นว่าอย่างน้อยส่วนหนึ่งของเหตุผลสำหรับเธรดที่อยู่ในสถานะนี้เกี่ยวข้องกับแคชคิวรี - ซึ่งสันนิษฐานว่ามันจะทำให้คิวรีแคชใช้งานไม่ได้เนื่องจากข้อมูลที่เปลี่ยนแปลง อย่างไรก็ตามฉันquery_cache_sizeถูกตั้งค่าเป็น 0 ซึ่งควรปิดการใช้งานแคชแบบสอบถามทั้งหมด มีเหตุผลอื่นอีกไหมที่จะมีเธรดจำนวนมากในสถานะนี้ ตารางที่เกี่ยวข้องใช้เอ็นจิ้นการจัดเก็บข้อมูล InnoDB
16 mysql  innodb 

7
การย้ายตารางไปยังฐานข้อมูล SQL2008 อื่น (รวมถึงดัชนีทริกเกอร์ ฯลฯ )
ฉันต้องการย้ายทั้งตาราง (100+) ของตารางขนาดใหญ่ (ล้านแถว) จากฐานข้อมูล SQL2008 หนึ่งไปยังอีก เดิมทีฉันเพิ่งใช้ตัวช่วยสร้างการนำเข้า / ส่งออก แต่ตารางปลายทางทั้งหมดไม่มีคีย์หลักและต่างประเทศดัชนีข้อ จำกัด ทริกเกอร์ ฯลฯ (คอลัมน์รหัสประจำตัวยังถูกแปลงเป็น INT ธรรมดาด้วย แต่ฉันคิดว่าฉันพลาดช่องทำเครื่องหมายใน วิซาร์ด.) วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? หากนี่เป็นเพียงสองสามตารางฉันจะกลับไปที่แหล่งที่มาออกคำจำกัดความของตาราง (ที่มีดัชนีทั้งหมด ฯลฯ ) จากนั้นเรียกใช้ส่วนการสร้างดัชนีของสคริปต์บนปลายทาง แต่ด้วยตารางจำนวนมากดูเหมือนว่าจะเป็นไปไม่ได้ หากมีข้อมูลไม่มากฉันสามารถใช้วิซาร์ด "สร้างสคริปต์ ... " เพื่อสคริปท์แหล่งที่มารวมถึงข้อมูล แต่สคริปต์แถวขนาด 72 ม. ดูเหมือนจะไม่เป็นความคิดที่ดีเลย!

4
เครื่องหมายอัฒภาคในตอนท้ายของคำสั่ง SQL * Plus มีความสำคัญอย่างไร
คำสั่งบางอย่างเช่นสร้างตาราง, แทรกลงใน ฯลฯ ใช้เซมิโคลอนที่ท้าย: CREATE TABLE employees_demo ( employee_id NUMBER(6) , first_name VARCHAR2(20) , last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn_demo NOT NULL ) ; ในขณะที่คนอื่นชอบ set echo on connect system/manager ผ่านไปโดยไม่มีเครื่องหมายอัฒภาคเช่นกัน อะไรคือเหตุผลเบื้องหลังสิ่งนี้ ฉันจะตัดสินใจเองได้อย่างไรว่าจะวางเซมิโคลอนไว้ที่ใด?

2
กรณีการเข้าร่วม Oracle ภายนอกที่แปลกประหลาด
ฉันได้เห็นสิ่งต่อไปนี้ในแบบสอบถามที่ควรจะถูกย้ายจาก Oracle outer join syntax ไปเป็น SQL standard outer join syntax: SELECT ... FROM A, B, C, D, E WHERE A.A_ID = B.A_ID AND B.B_ID = C.A_ID(+) AND B.B_KEY = C.B_KEY(+) AND C.C_ID = D.C_ID(+) AND B.A_ID = E.A_ID(+) AND B.B_KEY = E.B_KEY(+) AND 'CONSTANT' = C.X_ID(+) ตอนนี้การแปลไวยากรณ์การรวมภายนอกนั้นเป็นกระบวนการทางกล แต่บรรทัดสุดท้ายนั่นทำให้ฉันงุนงง มันหมายความว่าอะไร? …
16 oracle  join  syntax 

4
การสำรวจข้อมูลที่มีลักษณะคล้ายต้นไม้ในฐานข้อมูลเชิงสัมพันธ์โดยใช้ SQL
มีวิธีการสำรวจข้อมูลต้นไม้ใน SQL หรือไม่ ฉันรู้เกี่ยวกับconnect byใน Oracle แต่มีวิธีอื่นในการใช้ SQL อื่น ๆ ? ฉันถามเพราะการใช้connect byนั้นง่ายกว่าการเขียนลูปหรือฟังก์ชั่นวนซ้ำเพื่อเรียกใช้คิวรีสำหรับผลลัพธ์แต่ละรายการ เนื่องจากบางคนดูเหมือนจะสับสนกับวลี "ข้อมูลต้นไม้" ฉันจะอธิบายเพิ่มเติม: สิ่งที่ฉันหมายถึงเกี่ยวกับตารางที่มีparent_idเขตข้อมูลหรือคล้ายกันซึ่งมีคีย์หลักจากแถวอื่นในตารางเดียวกัน คำถามมาจากประสบการณ์ที่ฉันทำงานกับข้อมูลที่เก็บในลักษณะนี้ในฐานข้อมูล Oracle และรู้connect byว่าไม่ได้ดำเนินการใน DBMS อื่น ๆ หากมีใครที่จะใช้ SQL มาตรฐานคนหนึ่งจะต้องสร้างนามแฝงตารางใหม่สำหรับผู้ปกครองแต่ละคนหนึ่งที่ต้องการขึ้นไป สิ่งนี้สามารถหลุดออกจากมือได้อย่างง่ายดาย

6
การกำหนดค่า RAID ที่แนะนำสำหรับฐานข้อมูล Oracle คืออะไร
RAID (อาร์เรย์สำรองของดิสก์ราคาถูก) มาพร้อมกับการกำหนดค่าต่าง ๆ (RAID-0, RAID-1 ... ) อะไรคือการกำหนดค่า RAID ที่แนะนำที่ฉันควรตั้งค่าและใช้เมื่อติดตั้งฐานข้อมูล Oracle ฐานข้อมูลส่วนใหญ่จะใช้เป็นคลังข้อมูล

7
ฉันจะเรียนรู้การเป็น DBA ได้อย่างไร
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ คำถามสำหรับคุณ DBA และเช่น: คุณจะเรียนรู้ทักษะการเป็น DBA ได้อย่างไรโดยไม่ต้องมี 'การฝึก' และการฝึกปฏิบัติงาน? ประสบการณ์ของฉันในงาน DB ได้ยุ่งกับ MySQL ผ่าน MyPHPAdmin หรืออะไรทำนองนั้น ไม่ได้ทำงานในเชิงลึกมากมาย เรียน? หนังสือ SQL?
16 career 

1
SQL Server 2016 Bad Query Plan ล็อคฐานข้อมูลสัปดาห์ละครั้ง
สัปดาห์ละครั้งในช่วง 5 สัปดาห์ที่ผ่านมาในช่วงเวลาเดียวกันของวัน (เช้าตรู่อาจขึ้นอยู่กับกิจกรรมของผู้ใช้เมื่อผู้คนเริ่มใช้งาน), SQL Server 2016 (AWS RDS, มิร์เรอร์) เริ่มจับเวลาจำนวนมาก คำสั่ง ปรับปรุงสถิติในตารางทั้งหมดแก้ไขได้ทันที หลังจากครั้งแรกฉันทำให้มันอัปเดตสถิติทั้งหมดในทุกตารางทุกคืน (แทนที่จะเป็นรายสัปดาห์) แต่มันยังคงเกิดขึ้น (ประมาณ 8 ชั่วโมงหลังจากสถิติการอัปเดตทำงาน แต่ไม่ใช่ทุกวันที่มันทำงาน) ครั้งล่าสุดที่ฉันเปิดใช้งาน Query Store เพื่อดูว่าฉันสามารถค้นหาแผนแบบสอบถาม / แบบสอบถามที่เฉพาะเจาะจงได้หรือไม่ ฉันคิดว่าฉันสามารถ จำกัด ให้แคบลงหนึ่ง: หลังจากค้นหาข้อความค้นหานั้นฉันได้เพิ่มดัชนีที่แนะนำซึ่งขาดหายไปจากแบบสอบถามที่ไม่ได้ใช้บ่อยครั้งนี้ แผนแบบสอบถามที่ไม่ถูกต้องกำลังทำการสแกนดัชนี (บนตารางที่มีแถว 10k เท่านั้น) แผนคิวรีอื่น ๆ ที่ส่งคืนหน่วยเป็นมิลลิวินาทีใช้ในการสแกนแบบเดียวกัน แผนแบบสอบถามใหม่ล่าสุดหลังจากสร้างดัชนีใหม่จะค้นหาเท่านั้น แต่ถึงแม้จะไม่มีดัชนีนั้นก็ 99% ของเวลา แต่มันกลับมาภายในเวลาไม่กี่มิลลิวินาที แต่จากนั้นทุกสัปดาห์จะใช้เวลา> 40 วินาที แย่มากที่หมดเวลา: http://brentozar.com/pastetheplan/?id=rymaWt56e แผนก่อนหน้าซึ่งไม่หมดเวลา: http://brentozar.com/pastetheplan/?id=HyN7ftcpe แผนใหม่ล่าสุดพร้อมดัชนีใหม่: …

4
PostgreSQL: คอลัมน์ที่สร้าง
PostgreSQL สนับสนุนคอลัมน์ที่สร้างขึ้นหรือไม่ ก็รู้ว่าเป็นคอลัมน์เสมือน ฉันกำลังไม่ได้พูดคุยเกี่ยวกับคอลัมน์IDENTITY ฉันไม่สามารถหาข้อมูลเกี่ยวกับคุณสมบัติที่น่าทึ่งนี้ได้ แต่ฉันรู้ว่ามันมีอยู่ใน SQL Server และใน MariaDB & MySQL เวอร์ชันล่าสุด คุณลักษณะดังกล่าวได้รับการกล่าวถึงในมาตรฐานSQL: 2003และมีการพูดคุยกันในฟอรัม PostgreSQL ประมาณปี 2549 แต่ฉันไม่พบสิ่งใดในเนื้อหา มีการอภิปรายเกี่ยวกับ SO แต่ตอนนี้ค่อนข้างเก่าแล้วดังนั้นจึงอาจล้าสมัย

1
ทำความเข้าใจกับค่าเริ่มต้นของพารามิเตอร์“ max_wal_size” และ“ min_wal_size” จากไฟล์ postgresql.conf
ค่าเริ่มต้นคือตามเอกสารประกอบสำหรับmin_wal_sizeและmax_wal_sizeพารามิเตอร์ : สำหรับmax_wal_size: The default is 1 GB สำหรับmin_wal_size:The default is 80 MB จากนั้นฉันดูพารามิเตอร์นี้จากการกำหนดค่าฐานข้อมูลของฉัน: select name, setting, unit from pg_settings where name in ('min_wal_size', 'max_wal_size') ให้ผลลัพธ์: name | setting | unit ---------------------------------- max_wal_size | 64 | min_wal_size | 5 | ฉันมีคำถาม 2 ข้อ: 1) เหตุใดค่าเหล่านี้จึงไม่ตรงกับค่าเริ่มต้นซึ่งแสดงในเอกสาร ฉันไม่เคยเปลี่ยนการตั้งค่าคอนฟิกเลย 2) ทำไมunitคอลัมน์ว่างเปล่า / NULL …

1
ฉันจะแยกรหัส PL / pgSQL ที่ยาวเป็นหลายเส้นได้อย่างไร
มีวิธีการแบ่งรหัส PL / pgSQL ยาวเป็นหลายบรรทัดหรือไม่? บริบทของฉันคือฟังก์ชันทริกเกอร์ที่ฉันบันทึกการแทรกลงในตารางตาม: INSERT INTO insert_log (log_time, description) VALUES ( now() , 'A description. Made up of 3 semi long sentences. That I want to split, in the code, not in the log table, over 3 lines for readability.' );

3
วิธีการเขียนแบบสอบถามใน SQL Server เพื่อค้นหาค่าที่ใกล้ที่สุด
สมมติว่าฉันมีค่าจำนวนเต็มต่อไปนี้ในตาราง 32 11 15 123 55 54 23 43 44 44 56 23 ตกลงรายการสามารถดำเนินต่อไป; มันไม่สำคัญ ตอนนี้ฉันต้องการสืบค้นตารางนี้และฉันต้องการคืนค่าจำนวนclosest recordsหนึ่ง สมมติว่าฉันต้องการคืนการแข่งขันที่ใกล้เคียงที่สุด 10 รายการให้กับตัวเลข 32ฉันสามารถทำสิ่งนี้ได้อย่างมีประสิทธิภาพหรือไม่ มันอยู่ใน SQL Server 2014

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