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

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


4
แนวปฏิบัติที่เหมาะสมระหว่างการใช้ LEFT JOIN หรือ EXISTS
มีวิธีปฏิบัติที่ดีที่สุดระหว่างการใช้ LEFT JOIN หรือรูปแบบ NOT EXISTS หรือไม่? ประโยชน์ที่จะได้รับจากการใช้อย่างใดอย่างหนึ่งคืออะไร? ถ้าไม่มีควรเลือกแบบไหนดี? SELECT * FROM tableA A LEFT JOIN tableB B ON A.idx = B.idx WHERE B.idx IS NULL SELECT * FROM tableA A WHERE NOT EXISTS (SELECT idx FROM tableB B WHERE B.idx = A.idx) ฉันใช้คิวรีภายใน Access กับฐานข้อมูล SQL Server


8
อัลกอริทึมการตั้งค่า MAXDOP สำหรับ SQL Server
เมื่อตั้งค่า SQL Server ใหม่ฉันใช้รหัสต่อไปนี้เพื่อกำหนดจุดเริ่มต้นที่ดีสำหรับการMAXDOPตั้งค่า: /* This will recommend a MAXDOP setting appropriate for your machine's NUMA memory configuration. You will need to evaluate this setting in a non-production environment before moving it to production. MAXDOP can be configured using: EXEC sp_configure 'max degree of parallelism',X; RECONFIGURE If this instance is …

4
MySQL มีวิธีนำเข้า sql dump ขนาดใหญ่ (32 GB) เร็วขึ้นไหม?
ฉันมีการถ่ายโอนข้อมูล SQL ขนาดใหญ่ 32 GB ที่ฉันต้องนำเข้าสู่ MySQL ฉันไม่ได้นำเข้าการถ่ายโอนข้อมูล SQL ขนาดใหญ่เช่นนี้มาก่อน ฉันทำตามปกติ: mysql -uroot dbname < dbname.sql ใช้เวลานานเกินไป มีโต๊ะที่มีแถวประมาณ 300 ล้านแถวและได้รับถึง 1.5 ล้านในเวลาประมาณ 3 ชั่วโมง ดังนั้นดูเหมือนว่าสิ่งทั้งหมดจะใช้เวลา 600 ชั่วโมง (นั่นคือ 24 วัน) และทำไม่ได้ ดังนั้นคำถามของฉันคือมีวิธีที่เร็วกว่าในการทำเช่นนี้? ข้อมูลเพิ่มเติม / ผลการวิจัย ตารางเป็น InnoDB ทั้งหมดและไม่มีการกำหนดคีย์ต่างประเทศ อย่างไรก็ตามมีดัชนีจำนวนมาก ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์เดิมและฐานข้อมูลดังนั้นฉันจึงไม่สามารถทำการสำรองข้อมูลใหม่หรือทำสำเนา "ร้อน" เป็นต้น การตั้งค่าinnodb_flush_log_at_trx_commit = 2ตามที่แนะนำที่นี่ดูเหมือนว่าจะไม่มีการปรับปรุง (มองเห็นได้ชัดเจน / อธิบาย) สถิติเซิร์ฟเวอร์ในระหว่างการนำเข้า (จาก …

4
ลำดับเริ่มต้นของการบันทึกสำหรับคำสั่ง SELECT ใน MySQL คืออะไร?
สมมติว่าคุณมีตารางและข้อมูลต่อไปนี้: create table t ( k int, v int, index k(k) ) engine=memory; insert into t (k, v) values (10, 1), (10, 2), (10, 3); เมื่อออกselect * from t where k = 10โดยไม่มีorder byส่วนคำสั่ง MySQL จะเรียงลำดับระเบียนตามค่าเริ่มต้นอย่างไร

4
วิธีการระบุแบบสอบถามที่เติมบันทึกธุรกรรม tempdb?
ฉันต้องการทราบวิธีการระบุแบบสอบถามที่ถูกต้องหรือเก็บ proc ซึ่งจริง ๆ แล้วกรอกบันทึกการทำธุรกรรมของฐานข้อมูล TEMPDB

4
ดัชนีค้นหา vs สแกนดัชนี
ดูที่แผนการดำเนินการของคิวรีที่รันช้าและฉันสังเกตว่าบางโหนดเป็นดรรชนีและบางอันก็สแกนดรรชนี ความแตกต่างระหว่างกับการค้นหาดัชนีและการสแกนดัชนีคืออะไร? แบบไหนดีกว่ากัน? SQL จะเลือกอย่างใดอย่างหนึ่งได้อย่างไร ฉันรู้ว่านี่คือคำถาม 3 ข้อ แต่ฉันคิดว่าการตอบคำถามแรกจะอธิบายคำถามอื่น ๆ

7
ฉันจะปิดการใช้งานการจำลองแบบ MySQL อย่างสมบูรณ์ได้อย่างไร
ฉันกำลังรันการเรพลิเคท MySQL แบบดูอัลมาสเตอร์และตอนนี้ต้องการย้ายไปยังฐานข้อมูลเดียวโดยไม่มีการจำลองแบบ ฉันจะปิดใช้งานการจำลองแบบบนฐานข้อมูลทั้งสองได้อย่างไร

9
ฉันจะใช้ currval () ใน PostgreSQL เพื่อรับรหัสที่แทรกล่าสุดได้อย่างไร
ฉันมีโต๊ะ: CREATE TABLE names (id serial, name varchar(20)) ฉันต้องการ "id ที่แทรกล่าสุด" จากตารางนั้นโดยไม่ต้องใช้การRETURNING idแทรก ดูเหมือนจะมีฟังก์ชั่นCURRVAL()แต่ฉันไม่เข้าใจวิธีการใช้งาน ฉันได้ลองกับ: SELECT CURRVAL() AS id FROM names_id_seq SELECT CURRVAL('names_id_seq') SELECT CURRVAL('names_id_seq'::regclass) แต่ไม่มีใครทำงาน ฉันcurrval()จะใช้เพื่อรับ id ที่แทรกล่าสุดได้อย่างไร

1
วิธีที่ดีที่สุดในการลดขนาดของ ibdata ใน mysql คืออะไร
ฉันมีเซิร์ฟเวอร์ผลิตจำนวนหนึ่งซึ่งibdataไฟล์เพิ่มขึ้นทุกวัน มีการใช้พื้นที่ 290GB แล้ว ตารางในเซิร์ฟเวอร์ส่วนใหญ่เป็น InnoDB และมีคำขออ่านและเขียนสูง ขนาดไฟล์บันทึกเพิ่มขึ้นเช่นกัน มีข้อมูลจำนวนมากในตาราง ฉันจะควบคุมขนาดที่เพิ่มขึ้นของทั้งสองได้อย่างไร innodb_file_per_tableฉันไม่ได้ใช้
63 mysql  innodb 

4
MySQL: สร้างดัชนีหากไม่มีอยู่
มีวิธีสร้างดัชนีใน MySQL หรือไม่หากไม่มีอยู่? MySQL ไม่รองรับรูปแบบที่ชัดเจน: CREATE INDEX IF NOT EXISTS index_name ON table(column) ERROR 1064 (42000): You have an error in your SQL syntax;... รุ่น MySQL ( mysql -V) คือ 5.1.48 แต่ฉันคิดว่า MySQL ขาดCREATE INDEX IF NOT EXISTความสามารถในทุกรุ่น เป็นวิธีที่ถูกต้องในการสร้างดัชนีเฉพาะถ้ามันไม่ได้อยู่ใน MySQL คืออะไร?

4
คืนค่าฐานข้อมูลเฉพาะจากการสำรองข้อมูลโดยใช้คำสั่ง mongorestore อย่างไร
ฉันสร้างสำเนาสำรองของฐานข้อมูลทั้งหมดของฉันโดยใช้คำสั่ง mongodump ตอนนี้ฉันต้องการคืนค่าฐานข้อมูลเฉพาะโดยใช้คำสั่ง mongorestore เป็นไปได้อย่างไรฉันใช้คำสั่งนี้: - ตัวเลือก db แล้ว mongodb ไม่คืนค่าฐานข้อมูลเฉพาะ
62 mongodb 

3
ตรวจสอบข้อ จำกัด เพียงหนึ่งในสามคอลัมน์ที่ไม่ใช่ค่าว่าง
ฉันมีตาราง (SQL Server) ที่มีผลลัพธ์ 3 ประเภท: FLOAT, NVARCHAR (30) หรือ DATETIME (3 คอลัมน์แยกกัน) ฉันต้องการตรวจสอบให้แน่ใจว่าสำหรับแถวใดก็ตามมีเพียงหนึ่งคอลัมน์เท่านั้นที่มีผลลัพธ์และคอลัมน์อื่น ๆ เป็น NULL ข้อ จำกัด การตรวจสอบที่ง่ายที่สุดในการบรรลุสิ่งนี้คืออะไร? บริบทสำหรับสิ่งนี้กำลังพยายามเพิ่มความสามารถในการจับผลลัพธ์ที่ไม่ใช่ตัวเลขลงในระบบที่มีอยู่ การเพิ่มคอลัมน์ใหม่สองคอลัมน์ลงในตารางด้วยข้อ จำกัด เพื่อป้องกันผลลัพธ์มากกว่าหนึ่งรายการต่อแถวเป็นวิธีที่ประหยัดที่สุดไม่จำเป็นต้องเป็นคอลัมน์ที่ถูกต้อง อัปเดต: ขออภัยประเภทข้อมูล snafu น่าเศร้าที่ฉันไม่ได้ตั้งใจชนิดของผลลัพธ์ที่บ่งบอกว่าถูกตีความว่าเป็นประเภทข้อมูล SQL Server เพียงแค่คำศัพท์ทั่วไปได้รับการแก้ไขแล้ว

1
ข้อมูลเหตุการณ์ใดที่ฉันจะได้รับจากค่าเริ่มต้นจาก SQL Server
ฉันมักจะเห็นคำถามที่ผู้คนต้องการทราบว่ามีบางสิ่งเกิดขึ้นหรือเมื่อมันเกิดขึ้นหรือใครเป็นผู้ดำเนินการ ในหลายกรณี SQL Server ไม่ได้ติดตามข้อมูลนี้ด้วยตัวเอง ตัวอย่างเช่น: ใครดำเนินการที่ผ่านขั้นตอนการเก็บdbo.MyProcedure? ใครเป็นผู้ปรับปรุงsalaryคอลัมน์ในdbo.Employeesตาราง ใครสอบถามdbo.Ordersตารางล่าสุดจาก Management Studio บ้าง แต่มีเหตุการณ์อื่น ๆ หลายอย่างที่ SQL Server ที่ไม่ติดตามชั่วคราวโดยค่าเริ่มต้นและกำเนิดสามารถตอบคำถามเกี่ยวกับเช่น: ครั้งสุดท้ายที่การเติบโตอัตโนมัติเกิดขึ้นในฐานข้อมูล AdventureWorks และใช้เวลานานเท่าใด ใครลบdbo.EmployeeAuditDataตารางและเวลา วันนี้มีข้อผิดพลาดเกี่ยวกับหน่วยความจำกี่ข้อ? ฉันจะรับข้อมูลนี้ได้อย่างไรและจะมีอยู่นานเท่าใด

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