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

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

2
ความแตกต่างของประสิทธิภาพ INSERT ระหว่างตารางชั่วคราวและตัวแปรตาราง
ฉันมีปัญหาดังต่อไปนี้ใน SQL Server 2005: การพยายามแทรกแถวบางแถวในตัวแปรตารางใช้เวลานานเมื่อเทียบกับการแทรกแบบเดียวกันโดยใช้ตารางชั่วคราว นี่คือรหัสที่จะแทรกลงในตัวแปรตาราง DECLARE @Data TABLE(...) INSERT INTO @DATA( ... ) SELECT .. FROM ... นี่คือรหัสที่จะแทรกลงในตารางอุณหภูมิ CREATE #Data TABLE(...) INSERT INTO #DATA( ... ) SELECT .. FROM ... DROP TABLE #Data ตารางชั่วคราวไม่มีคีย์หรือดัชนีใด ๆ ส่วนที่เลือกจะเหมือนกันระหว่าง 2 แบบสอบถามและจำนวนผลลัพธ์ที่ส่งคืนโดยการเลือกคือ ~ 10,000 แถว เวลาที่ใช้ในการดำเนินการเลือกอย่างเดียวคือ ~ 10 วินาที เวอร์ชันของ temp table ใช้เวลาในการรันสูงสุด …

3
ข้อเสนอแนะฐานข้อมูลสำหรับเครือข่ายสังคม / ชุมชนฐานความรู้?
ฉันกำลังมองหาฐานข้อมูลประเภทต่างๆและ DBMS สำหรับโครงการใหม่ที่ฉันต้องการเริ่มในช่วงฤดูร้อน ฉันได้สร้างระบบใน MySQL และ postgreSQL ตอนนี้ฉันต้องการที่จะขยายความรู้และประสบการณ์ของฉันในฐานข้อมูล โครงการของฉันจะเป็นประเภทของเครือข่ายโซเชียล / รวมความรู้ (ยังไม่ได้พัฒนาคำเพื่ออธิบายยัง) ฉันได้ดูที่: คาสซานดรา (ใช้ภาษาคิวรีของตัวเอง); ดูเหมือนว่าจะดีสำหรับเนื้อหาที่มีคุณลักษณะหลากหลายและให้การดำเนินการค้นหาที่มีประสิทธิภาพสูง อย่างไรก็ตามฉันไม่ได้กระตือรือร้นกับมันมากเกินไปเพราะมันต้องการสภาพแวดล้อมแบบจาวาเพื่อทำงานต่อและฉันก็อยากจะไม่มีอะไรเกี่ยวข้องกับออราเคิล MongoDB (noSQL ประเภทของ DBMS); ความสามารถในการขยายที่ยอดเยี่ยม แต่คุณสูญเสียความสามารถทั้งหมดที่มีอยู่แล้วในภาษา SQL ที่พิสูจน์แล้วเช่นแบบสอบถามข้อมูลธุรกิจ ข้อกำหนดของระบบ: ข้อความข้อมูล , วันที่, เวลา, xml, ints ขนาดเล็ก, หยด โครงสร้าง / พฤติกรรม : ปกติ 3NF, ไม่ใช่เรียลไทม์, สัมพันธ์, ปรับขนาดได้, แข็งแกร่ง สภาพแวดล้อม: unix / linux, ไม่มี JAVA!, …

4
คุณรู้วิธีง่ายๆในการสร้างหนึ่งบันทึกในแต่ละชั่วโมงของ 12 ชั่วโมงที่ผ่านมา?
ฉันมีรายงานที่แสดงจำนวนเหตุการณ์ใน 12 ชั่วโมงที่ผ่านมาจัดกลุ่มตามชั่วโมง ฟังดูง่ายพอ แต่สิ่งที่ฉันดิ้นรนคือทำอย่างไรจึงจะรวมระเบียนที่ครอบคลุมช่องว่าง นี่คือตารางตัวอย่าง: Event ( EventTime datetime, EventType int ) ข้อมูลมีลักษณะดังนี้: '2012-03-08 08:00:04', 1 '2012-03-08 09:10:00', 2 '2012-03-08 09:11:04', 2 '2012-03-08 09:10:09', 1 '2012-03-08 10:00:17', 4 '2012-03-08 11:00:04', 1 ฉันต้องสร้างชุดผลลัพธ์ที่มีหนึ่งระเบียนสำหรับทุก ๆ ชั่วโมงของ 12 ชั่วโมงที่ผ่านมาไม่ว่าจะมีเหตุการณ์ในช่วงเวลานั้นหรือไม่ก็ตาม สมมติว่าเวลาปัจจุบันคือ '2012-03-08 11:00:00' รายงานจะแสดง (คร่าวๆ): Hour EventCount ---- ---------- 23 0 0 0 …

4
วิธีเก็บข้อมูลในฐานข้อมูลโดยไม่มีตาราง
สิ่งที่ฉันเรียนรู้ในโรงเรียนคือ SQL ซึ่งบันทึกข้อมูลลงในตาราง ตอนนี้ฉันกำลังทำงานในโครงการที่จัดเก็บข้อมูลในไฟล์ XML นอกจากนี้ XML ทุกตัวยังมีการอ้างอิงไปยังไฟล์ภาพ (JPEG) XML นั้นมีจุดพิกัดมากกว่าหนึ่งพันจุดพร้อมข้อมูลเพิ่มเติมเกี่ยวกับข้อมูล ในความคิดของฉันมันจะไม่มีเหตุผลที่จะเก็บข้อมูลนี้ไว้ในตาราง นอกจากนี้ฉันไม่สามารถจัดเก็บไฟล์ JPEG ด้วย SQL ได้เช่นกัน อะไรจะเป็นทางออกที่เหมาะสมหรือมีข้อผิดพลาดในการให้เหตุผลในด้านของฉัน อย่างที่คุณเห็นฉันค่อนข้างใหม่ในฐานข้อมูล ดังนั้นคำแนะนำที่สร้างสรรค์ลิงค์และคำแนะนำก็ยินดีต้อนรับ

1
ระบบจัดเก็บข้อมูลพร้อมกันสูง
ลองนึกภาพความต้องการของคุณคือคุณมีตารางขนาดใหญ่ 3 ตาราง (ข้อมูลที่มีโครงสร้าง) โดยมีจำนวนแถวละ 30,000 ล้านแถว (ขนาดรวม 4TB) และผู้ใช้ที่ใช้งานพร้อมกันจำนวนมาก (ซึ่งเป็นเธรดระบบปฏิบัติการแบบขนานบนเครื่อง LAN ระยะไกล) ข้อมูลผ่าน SELELCT WHERE GROUPBY ของพวกเขาและพร้อมกันสูงพูด 10,000 อ่านพร้อมกันในเวลาเดียวกันและผู้ใช้จำเป็นต้องแทรกข้อมูล (ไม่มีการปรับปรุง) ลงในตารางเหล่านี้พร้อมกันสูงเช่นนักเขียนพร้อมกัน 2000 (ทั่วเครือข่าย LAN ของศูนย์ข้อมูล) . ผู้ใช้ต้องการอ่านและแทรกให้เร็วที่สุดเท่าที่จะเป็นไปได้ในรูปแบบที่เก็บข้อมูลนี้ซึ่งการอ่านและเขียนแต่ละอันจะเกิดขึ้นคือ ms ถึง 1 วินาที เทคโนโลยีใดที่คุณแนะนำให้ตอบสนองความต้องการดังกล่าว มีที่เก็บข้อมูลหรือที่เก็บค่าคีย์ที่สามารถทำสิ่งนี้ได้หรือไม่? คลาวด์ไม่ใช่ตัวเลือก ชี้แจงบางส่วน: ผู้ใช้ไม่จำเป็นต้องเห็นข้อมูลทันทีและยอมรับความสอดคล้องในที่สุด ข้อมูลสามารถเข้าถึงได้ผ่านทุกไดรเวอร์ที่หน่วยเก็บข้อมูลสามารถให้และผู้ใช้จะเป็นเพียงเธรดที่ทำงานบนเครื่องระยะไกลของศูนย์ข้อมูล ข้อความค้นหาส่วนใหญ่จะเป็นเหมือน SELECT WHERE GROUPBY ข้อมูลอยู่ในรูปแบบตารางและแต่ละแถวมีขนาดประมาณ 60 ไบต์ ไม่มีตัวเลือกคลาวด์ที่ฉันไม่สามารถใช้ DynamoDB หรือโซลูชันที่คล้ายกัน ฉันต้องสามารถโฮสต์ภายในศูนย์ข้อมูลได้ ข้อมูลทั้งหมดของตารางสามารถอ่านได้ตลอดเวลาและรูปแบบการใช้งานไม่แน่นอน …

2
พารามิเตอร์โพรซีเดอร์ที่เก็บมีจำนวนมากเกินไป?
ฉันเพิ่งเริ่มเขียนกระบวนงานที่เก็บไว้ใน SQL Server 2008 และมีพารามิเตอร์มากกว่า 30 รายการ ฉันไม่เคยเขียนหนึ่งที่มีมากกว่า 10 พารามิเตอร์และนั่นทำให้ฉันคิดว่า ... ณ จุดใดมีพารามิเตอร์มากเกินไป? สำหรับบริบท ... ขั้นตอนนี้จะต้องแทรกแถวเดียวลงในตารางเดียว ก็จะมีความคล้ายคลึงกันมาก แม้ว่าจะค่อนข้างเล็ก เวอร์ชันที่ดำเนินการUPDATEบนตารางเดียวกัน คอลัมน์ส่วนใหญ่มีขนาดค่อนข้างเล็กโดยมีการผสมผสานของ int และ strings ( varchar(200)) ปัญหาคืออะไร; ดีหรือไม่ดี การมีโพรซีเดอร์ที่มีพารามิเตอร์จำนวนมากและเกณฑ์ที่ฉันควรเริ่มพิจารณารูปแบบอื่นคืออะไร


1
การตรวจสอบความสมบูรณ์ของไฟล์ฐานข้อมูล PostgreSQL
เมื่อใช้ระบบฐานข้อมูล PostgreSQL ฉันจะรู้ได้อย่างไรว่าฐานข้อมูลโดยรวมของฉันมีความสมบูรณ์ 100% โดยพื้นฐานแล้วฉันจะรู้ได้อย่างไรว่าไฟล์ข้อมูลและหน้าเว็บของฉันนั้นดี 100% โดยไม่มีความเสียหายหรือไม่ ในโลกของ Microsoft SQL Server มีคำสั่งให้คุณสามารถใช้งาน DBCC CHECKDB ที่จะบอกคุณว่ามีปัญหาหรือไม่ นี่คือลิงค์ถ้าคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง DBCC CHECKDB (Transact-SQL) ฉันเป็นคนซื่อสัตย์ฐานข้อมูลหวาดระแวงใจ (ซึ่งทุกคนที่ทำงานกับฐานข้อมูลในบทบาทประเภท DBA ควร) และสิ่งประเภทนี้ทำให้ฉันนอนหลับได้ยากในเวลากลางคืน อรรถประโยชน์เช่นนี้เป็นสิ่งที่ต้องมี! การค้นหาใน google พบว่ามีความพยายามในการใช้เครื่องมือเช่นนี้และในความคิดของฉันเว้นแต่ว่าเป็นเครื่องมือที่ได้รับการยอมรับอย่างเป็นทางการจากโครงการ PostgreSQL ฉันจะไม่ไว้ใจสิ่งที่สำคัญนี้ ต่อไปนี้เป็นลิงค์สำหรับคนที่ถามคำถามคล้าย ๆ กันกับสิ่งที่ฉันพิจารณาว่าไม่มีคำตอบที่ชัดเจน และในความคิดของฉันแสดงว่า PostgreSQL จำเป็นต้องมีเครื่องมือบางอย่างที่ Oracle และ Microsoft SQL Server ดูเหมือนจะมี ลิงค์แรกเป็นสิ่งที่น่าสนใจที่สุดที่ฉันพบในหัวข้อนี้ ฉันคิดว่าความคิดเห็นเกี่ยวกับบทความที่อาจรวมถึงสถานะ: "Postgres ค่อนข้างง่อยเมื่อมันมาถึงการระบุความเสียหายของฐานข้อมูลและซ่อมมันวิธีเดียวที่จะตรวจสอบได้คือการทิ้งฐานข้อมูลหรือเลือก * จากทุกตารางในฐานข้อมูล ." PostgreSQL …

2
จะลบโพรซีเดอร์ที่ชื่อคลุมเครือได้อย่างไร?
ฉันกำลังใช้ informix ... ฉันไม่รู้ว่าฉันทำได้อย่างไร แต่มีสองขั้นตอนที่มีชื่อเดียวกันในฐานข้อมูลของฉัน เมื่อฉันพยายามที่จะลบพวกเขาด้วย DROP PROCEDURE myProc; จากนั้นฉันได้รับข้อความแสดงข้อผิดพลาด ERROR: Routine (add_adr_trigger_row) ambiguous - more than one routine resolves to given signature. Error Code: -9700 ฉันจะวางขั้นตอนได้อย่างไร

3
Oracle รู้ได้อย่างไรว่าฉันเป็นใคร
ไม่สำคัญเล็กน้อย แต่มันทำให้ฉันอยากรู้อยากเห็น ฉันเพิ่งเข้าสู่ระบบฐานข้อมูล Oracle 10g เป็นครั้งแรกโดยใช้ Oracle SQL Developer Tools ฉันใช้การเข้าสู่ระบบของผู้ใช้ทั่วไปที่ไม่ใช่ชื่อของฉัน (nottstest2) จากเครื่องที่เรียกสิ่งที่ไม่ใช่ชื่อของฉัน (courgette) ชื่อของฉันไม่มีที่ใดในฐานข้อมูลและไม่เชื่อมโยงกับการเข้าสู่ระบบ แต่บันทึกของเซิร์ฟเวอร์แสดงการเชื่อมต่อจาก "Jon Hopkins" รู้ได้อย่างไรว่าฉันเป็นใคร มันถูกดึงจากการเข้าสู่ระบบ Windows ของฉันในบางวิธี (แม้ว่าฉันไม่ได้ใช้การลงชื่อเข้าใช้ครั้งเดียว)

4
ฉันจะเรียกใช้ไฟล์แบตช์จากงานที่กำหนดเวลาผ่านตัวแทนของเซิร์ฟเวอร์ SQL ได้อย่างไร
ฉันพยายามเรียกใช้ไฟล์แบตช์ (Windows) จากภายในงานตัวแทนของ SQL Server ภายใต้ SQL Server 2008 R2 ในขั้นตอนงานฉันได้สร้างขั้นตอนใหม่ตั้งค่าประเภทเป็น "ระบบปฏิบัติการ (CmdExec)" ฉันเริ่มพยายามใส่ชื่อแบตช์ไฟล์ในฟิลด์ "คำสั่ง" มันทำให้เกิดข้อผิดพลาดที่ไม่สามารถหาไฟล์ได้ จากนั้นฉันลอง: cmd.exe c: \ test.bat สิ่งนี้เริ่มต้น แต่ไม่เสร็จสมบูรณ์ (และดูเหมือนว่าจะใช้งานไม่ได้จริง ๆ ) ฉันพยายามตัดชื่อแบตช์ไฟล์ในเครื่องหมายคำพูด: cmd.exe "C: \ test.bat" แต่นั่นก็ไม่ได้สร้างความแตกต่างเลย ชุดค่าผสมเวทมนต์อะไรที่จะทำให้มันใช้งานได้?

4
ไม่มี NULLs แต่ลำดับไบต์ไม่ถูกต้องสำหรับการเข้ารหัส“ UTF8”: 0x00
ฉันใช้เวลา 8 ชั่วโมงที่ผ่านมาพยายามนำเข้าผลลัพธ์ของ 'mysqldump --compatible = postgresql' ลงใน PostgreSQL 8.4.9 และฉันได้อ่านอย่างน้อย 20 กระทู้ที่แตกต่างกันที่นี่และที่อื่น ๆ เกี่ยวกับปัญหาเฉพาะนี้แล้ว แต่ไม่พบ คำตอบที่ใช้งานได้จริงที่ทำงาน ทิ้งข้อมูล MySQL 5.1.52: mysqldump -u root -p --compatible=postgresql --no-create-info --no-create-db --default-character-set=utf8 --skip-lock-tables rt3 > foo เซิร์ฟเวอร์ PostgreSQL 8.4.9 เป็นปลายทาง กำลังโหลดข้อมูลด้วย 'psql -U rt_user -f foo' กำลังรายงาน (ส่วนใหญ่เป็นหนึ่งในตัวอย่าง): psql:foo:29: ERROR: invalid byte sequence for …

2
ความแตกต่างระหว่างการทำซ้ำแถวและคำสั่งใน MySQL?
ความแตกต่างที่แท้จริงระหว่างการจำลองแบบตามแถวและตามคำสั่งคืออะไร ฉันกำลังมองหาในแง่ของผลกระทบของการจำลองแบบต่อทาส ถ้าฉันใช้การจำลองแบบแบบแถวแล้วจะมีผลกับทาสอย่างไรและถ้าฉันใช้ข้อความที่อิงตามคำสั่งจะมีผลอย่างไร โปรดใช้พารามิเตอร์ต่อไปนี้ในการพิจารณา: replicate-ignore-db and replicate-do-db ขอบคุณ .... !

3
แนวคิดของตารางที่สงวนไว้คืออะไร
ฉันอ่านในเอกสารของ Oracle เกี่ยวกับตารางที่สงวนคีย์ในการอัปเดตส่วนเข้าชม อย่างไรก็ตามฉันไม่พบวิธีง่าย ๆ ที่จะเข้าใจ ฉันหวังว่าจะได้รับรายละเอียดเกี่ยวกับแนวคิดอย่างง่ายนอกเหนือจากเอกสาร Oracle อย่างเป็นทางการ
12 oracle 

5
วิธีใดที่มีประสิทธิภาพในการจัดการกับสกีมาฐานข้อมูลที่ใช้ร่วมกันระหว่างสาขาโค้ด
การทำงานในโครงการที่มีหลายสาขาซึ่งแต่ละสาขาจะถูกรวมเข้ากับสาขาหลักในที่สุดและแยกเป็นส่วนสำคัญเพื่อพัฒนาคุณสมบัติใหม่ ฐานข้อมูลซึ่งเป็น MS SQL Server มีสคีมาที่ใช้ร่วมกันอย่างไรก็ตามแต่ละสาขาทำการเปลี่ยนแปลงสคีมาในขณะที่มันดำเนินไป คำถามหลักของฉันคือวิธีที่ดีในการจัดการกับการแบ่งปันสคีมาจากสาขาหลักลงไปที่สาขาที่ได้รับเช่นการเปลี่ยนแปลงที่ทำกับสาขาหลักจะถูกรวมเข้ากับสาขาที่ได้มาโดยง่ายโดยไม่ต้องเปลี่ยนการเปลี่ยนแปลงใหม่ สาขา?

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