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

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

4
คุณจะบอกได้อย่างไรว่าตารางใน DB2 มีคีย์หลัก?
เรากำลังใช้เครื่องมือที่ต้องการตารางเฉพาะในฐานข้อมูล DB2 ของเราเพื่อกำหนดคีย์หลัก มีวิธีการใช้คำสั่งเลือกบนฐานข้อมูลเพื่อดูว่าตารางที่กำหนดมีหนึ่งหรือไม่ ขอบคุณ

1
โรงเรียนใดบ้างที่เป็นที่รู้จักสำหรับการวิจัยฐานข้อมูลระดับบัณฑิตศึกษา
มีโรงเรียนใดบ้างในโลกที่มีชื่อเสียงที่สุดในด้านการวิจัยที่ดำเนินการในฐานข้อมูลในครั้งล่าสุด

1
เพรดิเคตที่เหลือคืออะไร
แม้ว่าฉันจะสามารถค้นหาคำจำกัดความของภาคแสดงทางออนไลน์ได้ที่MSDN : เป็นนิพจน์ที่ประเมินค่าเป็น TRUE, FALSE หรือ UNKNOWN เพรดิเคตจะใช้ในเงื่อนไขการค้นหาของ WHERE clause และ HAVING clauses, เงื่อนไขการรวมของ FROM clauses และโครงสร้างอื่น ๆ ที่ต้องการค่าบูลีน ฉันไม่สามารถค้นหาคำจำกัดความของเพรดิเคตที่เหลือได้ เพรดิเคตที่เหลือคืออะไร

2
วิธีเก็บ Google ngrams ในฐานข้อมูลได้ดีที่สุด
ฉันดาวน์โหลด google onegrams เมื่อหลายวันก่อนและมันมีข้อมูลจำนวนมากแล้ว ฉันใส่ 10 แพ็คเกจแรกลงใน mysql และตอนนี้ฉันมีฐานข้อมูลบันทึก 47 ล้านชุด ฉันสงสัยว่าควรเก็บ Google ngrams ไว้ในฐานข้อมูลอย่างไรดีที่สุด ฉันหมายความว่าถ้าคุณไม่ได้ใช้งาน onegrams แต่เช่น twograms หรือสามกรัมจำนวนเงินจะมากขึ้น ฉันสามารถบันทึก 500 ล้านเร็กคอร์ดในฐานข้อมูลเดียวและทำงานกับมันหรือฉันควรจะแบ่งมันออกเป็นตารางต่าง ๆ หรือไม่? หลังจากนั้นควรมีการบันทึกจำนวนเท่าใดและควรแยกกันอย่างไรดีที่สุด (เนื่องจาก twograms นั้นมี 100 ไฟล์และน่าจะมีประมาณ 5 พันล้านรายการ) แนะนำให้ใช้ MySQL การแบ่งพาร์ติชันตามแนวนอนหรือสร้างการแบ่งพาร์ติชันของตัวเอง (เช่นผ่านตัวอักษรตัวแรกของ word => twograms_a)

3
คำแนะนำใด ๆ ในการลดเอกสิทธิ์ของฉันในการผลิต แต่ไม่ทำให้งานของฉันยากเกินไป
ใช้ SQL Server 2005 และ 2008 บน Windows 2008 R2 เรากำลังจะได้รับการลดสิทธิพิเศษในการผลิตสำหรับนักพัฒนา - และฉันต้องการที่จะทำเช่นเดียวกันสำหรับตัวเองเป็นที่ DBAจำกัด สิทธิในการผลิตและการยกระดับเมื่อจำเป็น เป้าหมายหลักของฉันคือการกำจัดข้อผิดพลาดที่โง่ - ทำโดย DBAsผู้พัฒนาจะได้อ่านการเข้าถึงในการผลิตมากที่สุด เราชอบที่จะทำตัวเหมือนเราเป็นฮีโร่ที่ไม่สามารถทำผิดพลาดได้ แต่ไม่มีสิทธิ์ในการผลิตตลอดเวลาที่เหมาะสมและเป็นแนวปฏิบัติที่ดีที่สุดที่แนะนำโดยบางคน วิธีที่ดีที่สุดคืออะไร อะไรจะเจ็บปวดน้อยที่สุดที่จะใช้แบบวันต่อวันและระหว่างการติดตั้ง? ขณะนี้เรามีกลุ่ม windows สำหรับ DBA ที่มีสิทธิ์ในเซิร์ฟเวอร์และฐานข้อมูลทั้งหมดของเรา ฉันยังสนใจที่จะลดสิทธิ์การเข้าสู่ระบบ OS / ระยะไกล - แต่ฉันกังวลมากที่สุดเกี่ยวกับสิทธิ์ DB ฉันคาดเดาว่าเราจะต้องใช้สิทธิ์ระดับสูงในการเรียกใช้การติดตามเป็นไปได้และอาจเป็นการล้างข้อมูลความเป็นเจ้าของก่อนที่เราจะยกเลิกสิทธิ์การเข้าใช้งาน SA เก่า ปัญหาอื่น ๆ ที่เราอาจคาดหวัง ขอบคุณสำหรับคำแนะนำและแบ่งปันประสบการณ์ของคุณ!

4
ฉันจะเพิ่มประสิทธิภาพการสืบค้น MySQL นี้เพิ่มเติมได้อย่างไร
ฉันมีคำถามที่ใช้เวลานานในการรัน (15+ วินาที) และยิ่งแย่ลงเมื่อเวลาผ่านไปเมื่อชุดข้อมูลของฉันเติบโต ฉันเคยปรับปรุงสิ่งนี้ในอดีตและได้เพิ่มดัชนีการเรียงลำดับระดับโค้ดและการเพิ่มประสิทธิภาพอื่น ๆ แต่ก็ต้องมีการปรับแต่งเพิ่มเติม SELECT sounds.*, avg(ratings.rating) AS avg_rating, count(ratings.rating) AS votes FROM `sounds` INNER JOIN ratings ON sounds.id = ratings.rateable_id WHERE (ratings.rateable_type = 'Sound' AND sounds.blacklisted = false AND sounds.ready_for_deployment = true AND sounds.deployed = true AND sounds.type = "Sound" AND sounds.created_at > "2011-03-26 21:25:49") GROUP …

1
มุมมองที่ปรากฏใน oracle
มีการนำเอามุมมองที่เป็นรูปธรรมมาใช้ใน oracle อย่างไร ฉันสร้างมุมมองที่เป็นจริงใน oracle แล้ว สิ่งที่ฉันเห็นตอนนี้เป็นตารางปกติกับงาน มีการแปลมุมมองที่ปรากฏเป็นตารางและงานใน oracle หรือไม่
9 oracle  view 

3
ผลกระทบความเร็วของการใช้ varchar ใน SQL Server 2008
ในสมัยก่อนการใช้varcharเกินcharเป็นสิ่งที่ไม่ใหญ่เพราะvarcharถูกเก็บไว้ในหน้าอื่นนอกเหนือจากส่วนที่เหลือของแถว วันนี้เป็นกรณีของ SQL Server 2008 หรือยัง ฉันจะเห็นหน่วยความจำ / ประสิทธิภาพเพิ่มขึ้นจากการเปลี่ยน 1-3 varchar(5)คอลัมน์เป็นchar(5)คอลัมน์บนตารางด้วยหรือไม่ ก) บอก 2.000.000 แถว b) หากvarcharคอลัมน์ใด ๆเป็นส่วนหนึ่งของดัชนี / คีย์หลัก

5
วิธีที่มีประสิทธิภาพมากที่สุดในการแก้ไขคำจำกัดความของคอลัมน์ในตารางที่มีแถวเป็นล้านแถวคืออะไร
ฉันต้องการเปลี่ยนคอลัมน์จาก NOT NULL เป็น NULL ในตารางที่มีแถวนับล้าน ฉันได้ลองง่ายๆ alter table Table1 ALTER COLUMN Column1 XML NULL แต่มันต้องใช้ตลอดไป ดังนั้นนี่คือคำถามของฉัน: เหตุใดจึงใช้เวลานานกว่าจะใช้การเปลี่ยนแปลง มีวิธีที่ดีกว่าที่จะทำหรือไม่

3
ระบุการเชื่อมต่อใน Query Studio T-SQL Query
เมื่อเพิ่มผู้ใช้เป็นบทบาทในเซิร์ฟเวอร์ฐานข้อมูลฉันมักจะใช้ฟังก์ชั่น "Script this action" จาก GUI จากนั้นฉันก็ไปที่ "การเชื่อมต่อ :: เปลี่ยนการเชื่อมต่อ" เพื่อทำสิ่งเดียวกันบนเซิร์ฟเวอร์อื่นของฉัน มีวิธีที่ฉันสามารถระบุการเชื่อมต่อในการดำเนินการสคริปต์ดังนั้นฉันไม่จำเป็นต้องทำตามขั้นตอนที่สองเปลี่ยนการเชื่อมต่อ?

1
ทำลายและฟื้นฟูกระจก
ฉันต้องทำการบำรุงรักษาบางอย่างบนโหนดลำดับที่สองของมิเรอร์ เนื่องจากนี่เป็นผลมาจากไซต์เริ่มช้าลงในขณะที่มิเรอร์สร้างใหม่หลังจากเครือข่ายสั้น ๆ ฉันต้องการที่จะปลอดภัยและปิดการใช้งานมิเรอร์จากนั้นเปิดใช้งานอีกครั้งหลังจากที่ฉันทำ poking ที่เซิร์ฟเวอร์ที่ละเมิด แผนการที่ฉันมีในตอนนี้คือ: ปิดการใช้งานกระจก ทำการแก้ไขปัญหาที่อาจเป็นอันตรายของฉัน กู้คืนบันทึกธุรกรรมที่ไม่ได้รับทั้งหมด สร้างกระจกอีกครั้ง นี่เป็นวิธีที่ปลอดภัยที่สุดในการทำลาย / สร้างกระจกอีกครั้งหรือไม่? มี gotcha ใด ๆ ที่ฉันควรระวัง?

2
การแสดงแผนแบบสอบถามใน Server Management Studio
คำถามอื่นเกี่ยวกับเซิร์ฟเวอร์ SQL: ฉันมีคำถามง่ายๆที่ให้ CPU ที่ใช้ CPU มากที่สุดตั้งแต่ตัวนับถูกรีเซ็ต: select top 10 sum(qs.total_worker_time) as total_cpu_time, sum(qs.execution_count) as total_execution_count, qs.plan_handle, st.text from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.plan_handle) as st group by qs.plan_handle, st.text order by sum(qs.total_worker_time) desc คำถามที่ 1: สิ่งที่แน่นอนคือplan_handle? ดูเหมือนว่าจะไม่มีการแฮชของแผนเหมือนใน Oracle ฉันถามเพราะฉันต้องการให้สามารถตรวจสอบสถานการณ์ที่แผนของคำสั่งมีการเปลี่ยนแปลง คำถามที่ 2: เมื่อฉันมีแผนมือจับฉันสนใจแผนจริง ดังนั้นฉันทำเช่น: select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000) ในคอลัมน์ …

2
วิธีการนำเพจจิ้งไปใช้อย่างมีประสิทธิภาพ?
ฉันมีแบบสอบถามฐานข้อมูลซึ่งอาจส่งผลให้ชุดผลลัพธ์ขนาดใหญ่ ลูกค้าที่แสดงข้อมูลได้รับข้อมูลผ่านเครือข่ายดังนั้นแนวคิดก็คือการลดจำนวนข้อมูลที่ถ่ายโอนให้น้อยที่สุดโดยการดึงผลลัพธ์ 50 รายการแรกจากฐานข้อมูลและส่งไปยังลูกค้า จากนั้นฉันจะให้ความเป็นไปได้ที่จะข้ามไปยังหน้าสองเพื่อดึงผลลัพธ์ 50 รายการถัดไปเป็นต้น (คล้าย ๆ กับข้อเสนอของ Google) คำถามคือวิธีที่มีประสิทธิภาพในการใช้เพจจิ้ง ฉันต้องการตรวจสอบให้แน่ใจว่า mssql ใช้แคชมากที่สุดเท่าที่จะเป็นไปได้และไม่ดำเนินการเดียวกันอีกครั้งทุกครั้งที่ฉันเปลี่ยนเพจ มีลูกค้าจำนวนมากที่กำลังสืบค้นฐานข้อมูลในเวลาเดียวกัน โปรแกรม sql ที่ใช้: MS SQL 2005 ความคิดของฉันคือ: ใช้ statemenst ของ sql ที่เตรียมไว้เพื่อให้แน่ใจว่ามีการแชร์แผนปฏิบัติการ ใช้ตัวแปร ROW_COUNT เพื่อดึงเฉพาะแถวที่ต้องการ แต่มันเป็นวิธีที่มีประสิทธิภาพที่สุดจริง ๆ หรือ? หรือคุณคิดว่าจะเป็นการดีกว่าที่จะดึงชุดผลลัพธ์ทั้งหมดและนำเพจจิ้งไปใช้ในโค้ดที่ส่งข้อมูลไปให้ลูกค้า ขอบคุณสำหรับเคล็ดลับ! ขอแสดงความนับถือโทมัส

4
ทำไม MySQL ถึงบอกว่าฉันไม่มีความจำ
ฉันพยายามรันINSERT...SELECTMySQL ที่มีขนาดค่อนข้างใหญ่ด้วย JDBC และฉันได้รับข้อยกเว้นต่อไปนี้: Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) เนื่องจากฉันไม่ได้ส่งคืนออบเจกต์ ResultSet ฉันจึงคิดว่าพื้นที่ของฮีป Java ไม่น่าจะมีปัญหา อย่างไรก็ตามฉันพยายามเพิ่มมันต่อไปและมันก็ไม่ได้ดี จากนั้นฉันพยายามเรียกใช้คำสั่งใน MySQL Workbench และฉันได้สิ่งเดียวกัน: Error Code 5: Out of memory (Needed 1073741816 bytes) ฉันควรมี RAM มากมายเพื่อให้การดำเนินการเหล่านี้ (เพียงพอที่จะพอดีกับตารางทั้งหมดที่ฉันเลือกจาก) แต่ฉันเดาว่ามีการตั้งค่าต่าง ๆ ที่ฉันจำเป็นต้องปรับแต่งเพื่อใช้ประโยชน์จากหน่วยความจำทั้งหมดของฉัน ฉันใช้หน่วยความจำสูง Amazon EC2 หน่วยความจำเสริมใหญ่เป็นสองเท่าด้วย Windows Server 2008 …

1
ฉันจะเขียนทริกเกอร์ที่เขียนสำหรับ Oracle ได้อย่างไรสำหรับ SQL Server
ฉันจะเขียนทริกเกอร์ที่เขียนขึ้นใหม่สำหรับ Oracle Server ได้อย่างไรสำหรับ SQL นี่คือรหัสทริกเกอร์ Oracle ของฉัน: CREATE OR REPLACE TRIGGER P000KUL_TEST BEFORE INSERT ON P000KUL REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN SELECT TO_CHAR(SYSDATE, 'dd/mm/RRRR') INTO :NEW.SYSTEM_DATE FROM DUAL; SELECT TO_CHAR(SYSDATE, 'hh:mi') INTO :NEW.SYSTEM_TIME FROM DUAL; END;

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