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

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

2
mongodb: ชุดจำลองที่มีตัวโหลดบาลานซ์
มีตัวเลือกสำหรับการปรับสมดุลโหลดด้วยชุดจำลอง mongodb หรือไม่? ฉันไม่ได้ขอ HAProxy หรือคล้ายกัน แต่สำหรับคุณลักษณะในตัวจาก mongodb ไม่พบเคล็ดลับสำหรับสิ่งนี้ในเอกสาร
9 mongodb 

2
ประสิทธิภาพช้าแทรกแถวน้อยลงในตารางขนาดใหญ่
เรามีกระบวนการที่ใช้ข้อมูลจากร้านค้าและอัปเดตตารางสินค้าคงคลังทั่วทั้ง บริษัท ตารางนี้มีแถวสำหรับทุกร้านค้าตามวันที่และตามรายการ ที่ลูกค้าที่มีร้านค้ามากมายตารางนี้จะมีขนาดใหญ่มาก - ตามลำดับ 500 ล้านแถว โดยทั่วไปกระบวนการอัปเดตคลังโฆษณานี้จะเรียกใช้หลายครั้งต่อวันเนื่องจากร้านค้าป้อนข้อมูล สิ่งเหล่านี้เรียกใช้การอัพเดทข้อมูลจากร้านค้าเพียงไม่กี่แห่ง อย่างไรก็ตามลูกค้าสามารถเรียกใช้สิ่งนี้เพื่ออัปเดต, พูดว่า, ร้านค้าทั้งหมดใน 30 วันที่ผ่านมา ในกรณีนี้กระบวนการหมุน 10 เธรดและอัปเดตคลังเก็บของแต่ละร้านในเธรดแยกต่างหาก ลูกค้าร้องเรียนว่ากระบวนการใช้เวลานาน ฉันได้ทำโพรเซสและพบว่ามีหนึ่งแบบสอบถามที่ INSERT ในตารางนี้ใช้เวลานานกว่าที่คาดไว้ บางครั้ง INSERT นี้จะเสร็จสมบูรณ์ใน 30 วินาที เมื่อฉันรันคำสั่ง ad-hoc SQL INSERT กับตารางนี้ (ล้อมรอบด้วย BEGIN TRAN และ ROLLBACK), ad-hoc SQL จะทำงานให้เสร็จสมบูรณ์ตามลำดับมิลลิวินาที ข้อความค้นหาที่ทำงานช้าอยู่ด้านล่าง แนวคิดคือการบันทึก INSERT ที่ไม่ได้อยู่ที่นั่นและภายหลังเพื่อปรับปรุงพวกเขาในขณะที่เราคำนวณบิตของข้อมูล ขั้นตอนก่อนหน้าในกระบวนการระบุรายการที่จำเป็นต้องได้รับการปรับปรุงทำการคำนวณบางอย่างและยัดผลลัพธ์ลงในตาราง tempdb Update_Item_Work กระบวนการนี้ทำงานใน 10 เธรดแยกกันและแต่ละเธรดมี …

1
ประสิทธิภาพของ SQL Server 2012 กับ SQL Server 2008 R2
ใครบ้างมีลิงค์ไปยังการเปรียบเทียบประสิทธิภาพของโปรแกรมฐานข้อมูลหรือรายงานประวัติย่อใด ๆ ของการปรับปรุงประสิทธิภาพใน SQL Server 2012 เราใช้เอ็นจิ้น DB เท่านั้นไม่ใช่การรายงานบริการหรือ BI คำแนะนำ / gotchas จากมุมมองการอัพเกรด?

2
SQL Server เลือกคีย์ดัชนีสำหรับการอ้างอิงคีย์ต่างประเทศอย่างไร
ฉันทำงานกับฐานข้อมูลดั้งเดิมที่นำเข้าจาก MS Access มีตารางประมาณยี่สิบตารางที่มีคีย์หลักที่ไม่ซ้ำกันและไม่ซ้ำกันซึ่งสร้างขึ้นในระหว่างการเข้าถึง MS> SQL Server อัพเกรด ตารางเหล่านี้จำนวนมากยังมีดัชนีที่ไม่ซ้ำกันและไม่ทำคลัสเตอร์ซึ่งซ้ำกันของคีย์หลัก ฉันพยายามทำความสะอาด แต่สิ่งที่ฉันได้พบคือหลังจากที่ฉันสร้างคีย์หลักใหม่เป็นดัชนีคลัสเตอร์จากนั้นพยายามสร้างคีย์ต่างประเทศคีย์ต่างประเทศคือการอ้างอิงดัชนีเก่าที่ซ้ำกัน (ซึ่งไม่ซ้ำกัน) ฉันรู้สิ่งนี้เพราะมันจะไม่ให้ฉันปล่อยดัชนีที่ซ้ำกัน ฉันคิดว่า SQL Server จะเลือกคีย์หลักเสมอหากมีอยู่ SQL Server มีวิธีเลือกระหว่างดัชนีที่ไม่ซ้ำกันและคีย์หลักหรือไม่ ในการทำซ้ำปัญหา (บน SQL Server 2008 R2): IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Child') DROP TABLE Child GO IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Parent') …

1
ตัวแปรสำหรับชื่อองค์ประกอบ
ฉันมีรหัส tSQL นี้ซึ่งใช้งานได้: SELECT c.logguid, a.b.value('./PropertyValue', 'varchar(max)') asd FROM [dnn].[dbo].[EventLog2] c cross apply sss.nodes('/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")]') as a(b) อย่างไรก็ตามสิ่งที่ฉันต้องการที่จะสามารถทำได้คือการส่งผ่านรายการแบบไดนามิกของค่าจำนวนมากซึ่งเป็น OR ระหว่างแต่ละค่าเช่น SELECT c.logguid, a.b.value('./PropertyValue', 'varchar(max)') asd FROM [dnn].[dbo].[EventLog2] c cross apply sss.nodes( '/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y") or PropertyName=sql:variable("@a") and PropertyValue=sql:variable("@b") ]' ) as a(b) มีวิธีทำเช่นนี้หรือไม่?
9 t-sql  xml 

3
วิธีแก้ปัญหา enq: TX - การช่วงชิงล็อกการล็อกแถว
ฉันมีสถานการณ์ต่อไปนี้ ฉันมี RAC บนโหนดทั้งสองมีการล็อคอยู่ บนโหนดแรก SID EVENT USERNAME BLOCKING_SESSION ROW_WAIT_OBJ# OBJECT_NAME LOCKWAIT SQL_ID STATUS 1 102 enq: TX - row lock contention MYUSER 155 136972 TABLE1V 0000000810EFA958 5f4bzdg49fdxq ACTIVE 2 111 enq: TX - row lock contention MYUSER 155 136972 TABLE1V 0000000810EFAC98 5f4bzdg49fdxq ACTIVE การปิดกั้นข้อมูลเซสชั่น SID EVENT USERNAME ROW_WAIT_OBJ# OBJECT_NAME …

2
SQL Server ประเมินฟังก์ชันหนึ่งครั้งสำหรับทุกแถวหรือไม่
ฉันมีคำถามเช่นนี้ SELECT col1 FROM MyTable WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) BETWEEN col2 AND col3 ; สิ่งนี้จะให้คำแนะนำเครื่องมือในแผนการดำเนินการที่คล้ายกับสิ่งนี้: ที่ไม่dateaddเป็นส่วนหนึ่งของการแสวงหาภาคได้รับการดำเนินการสำหรับแถวในแบบสอบถามทุกครั้งหรือไม่ หรือ SQL Server คำนวณค่าหนึ่งครั้งสำหรับแบบสอบถามทั้งหมดหรือไม่

1
ฟีเจอร์การทดแทน SQL ใน Oracle 10g
สามหรือสี่ปีที่แล้วฉันอ่านในบล็อกของออราเคิลที่ไหนสักแห่งที่ DBA ใช้เพื่อแก้ไขเหตุการณ์ฉุกเฉินคุณลักษณะ Oracle 10g ของการทดแทน SQL แบบเรียลไทม์ โดยทั่วไปเขาได้กำหนดค่า Oracle ในแบบที่ทุกครั้งที่ได้รับการสืบค้น A ที่ดำเนินการแบบสอบถามอื่น B ​​แทน ไม่มีการเปลี่ยนแปลงรหัสแอปพลิเคชันไม่มีการเปลี่ยนแปลง schema เพียงแค่ "เรียกใช้แบบสอบถาม B แทนการกำหนดค่าประเภท" ไม่ใช่ว่าฉันกำลังวางแผนที่จะใช้คุณลักษณะนั้น (ฉันสามารถนึกถึงผลที่ไม่พึงประสงค์บางอย่าง) แต่มันมีอยู่จริงหรือไม่? ถ้าใช่คุณสมบัตินั้นเรียกว่าอะไร?

3
ฉันมีเครื่องที่ทรงพลังพร้อม RAM 70 GB สามารถสร้างอินสแตนซ์ Oracle จำนวน 20 GB ได้เท่าใด
ฉันมีเครื่องที่ทรงพลังพร้อม RAM 70 GB ฉันสร้างหนึ่งอินสแตนซ์ของ Oracle ที่มี 20 GB เป็น sga_target ฉันไม่สามารถสร้างอินสแตนซ์ Oracle อื่นsga_target > 10Gได้แม้ว่าฉันจะเก็บฐานข้อมูลแรกลง หากฉันตั้งค่าsga_target >=10Gมันให้ข้อผิดพลาดด้านล่างเมื่อเริ่มต้น: ORA-27104: ข้อ จำกัด ที่ระบบกำหนดสำหรับหน่วยความจำที่ใช้ร่วมกันนั้นได้รับการกำหนดค่าผิดพลาด ในขณะที่free -mแสดงให้เห็นว่ามี memeory เพียงพอที่สามารถใช้ได้แม้ว่า total used free shared buffers cached Mem: 72419 34490 37928 0 618 28159 -/+ buffers/cache: 5711 66707 Swap: 2047 0 2047 ฉันจำเป็นต้องเพิ่มพื้นที่สว็อปหรือไม่? ตัวชี้ใด ๆ …

4
ฉันจำเป็นต้องเก็บไฟล์. LDF จริงๆหรือไม่
ในแต่ละเดือนเราจัดทำฐานข้อมูลการผลิตของเราทุกสิ้นเดือน สแน็ปช็อตสิ้นเดือนนี้มีจุดประสงค์เพื่อการรายงานอย่างเคร่งครัดไม่มีส่วนแทรกการอัปเดตหรือการลบที่เคยทำ แต่ละสแน็ปช็อตเหล่านี้มี.MDFและ.LDFไฟล์ ฉันต้องการลบ.LDFไฟล์และเพิ่มพื้นที่ว่างบนเซิร์ฟเวอร์ มีเหตุผลใดบ้างที่ฉันจำเป็นต้องจัดเก็บ.LDFไฟล์? ชี้แจง: ฐานข้อมูลการผลิตของเราถูกสร้างขึ้นใหม่ทุกคืนจากการแตกไฟล์ออกจากระบบอื่น เรารายงานจากฐานข้อมูลการผลิตเท่านั้น ... ไม่มีการอัปเดต กระบวนการกลางคืน: จากสิ่งที่ฉันสามารถบอกได้ ... แต่ละคืนตาราง databse จะถูกตัดทอน ตารางจะถูกเติมผ่านชุดคำสั่งแทรกจำนวนมาก ดัชนีจะถูกสร้างใหม่

1
วิธีการทั่วไปที่รวดเร็วในการคำนวณเปอร์เซ็นต์
ฉันต้องการค้นหา n> 1 เปอร์เซนต์ของคอลัมน์ที่ไม่เรียงลำดับใน PostgreSQL ตัวอย่างเช่นเปอร์เซ็นไทล์ที่ 20, 40, 60, 80 และ 100 วิธีแก้ปัญหาที่ชัดเจนคือการนับและจัดเรียงคอลัมน์แล้วดู แต่ฉันหวังว่าจะได้คำตอบที่ดีกว่า ความคิดใด ๆ PS ฉันพบวิธีแก้ปัญหาที่ดีสำหรับ MySQL แต่ไม่สามารถแปลเป็น psql ได้

2
คำขอ Amazon RDS I / O - 1 ข้อความค้นหา = 1 I / O ที่เรียกเก็บเงินได้?
ฉันมีฐานข้อมูล InnoDB ที่ฉันต้องการย้ายไปยัง Amazon RDS การติดตั้งในปัจจุบันของฉันซึ่งโฮสต์บนเซิร์ฟเวอร์ของฉันเองนั้นแสดงให้เห็นถึงการสืบค้น 8 ล้านครั้งต่อเดือน ไซต์ RDSบอกว่าอัตรา I / O อยู่ที่ $ 0.10 ต่อ 1 ล้านคำขอ 1 I / O = 1 แบบสอบถามหรือไม่ เช่นฉันจะถูกเรียกเก็บเงินจำนวน $ 80 / เดือนสำหรับการใช้งานจำนวนนี้ + ค่าธรรมเนียม RDS หรือไม่
9 mysql  innodb 

2
Mongo Collection `ขนาด 'ใหญ่กว่า * พื้นที่เก็บข้อมูลขนาด'?
ฉันเพิ่งกระชับคอลเลกชันของฉันโดยใช้คำสั่ง: db.<collectionName>.runCommand( "compact" ) และตอนนี้ขนาดคอลเลกชันของฉันดูเหมือนจะใหญ่กว่าขนาดบนดิสก์! SECONDARY> db.<collectionName>.stats() { "ns" : "<databaseName>.<collectionName>", "count" : 2937359, "size" : 5681676492, # 5.6 GB "avgObjSize" : 1934.2805874256433, "storageSize" : 4292853728, # 4.2 GB "numExtents" : 2, "nindexes" : 2, "lastExtentSize" : 2146426864, "paddingFactor" : 1.669999999836597, "flags" : 1, "totalIndexSize" : 220735648, "indexSizes" : { …
9 mongodb 

1
SQL * Plus, @ และพา ธ สัมพัทธ์
อย่างใดดูเหมือนว่า SQL * Plus (อย่างน้อยบน Windows) ไม่สามารถค้นหาสคริปต์ด้วยเส้นทางสัมพัทธ์เมื่อเรียกด้วย@@และเมื่อเส้นทางเริ่มต้นด้วยจุดเดียวหรือสองครั้ง ตัวอย่างเช่นภายใต้x:\some\whereฉันมีโครงสร้างไดเรกทอรีต่อไปนี้: script.sql main-dir\main-sub-dir call-script.sql script.sql นั่นคือ: สองscript.sqlสถานที่ต่างกัน เนื้อหาของscript.sqlอันเดอร์ภายใต้x:\some\whereนั้นเรียบง่าย prompt SCRIPT root ในขณะที่script.sqlเนื้อหาอื่น ๆคือ prompt SCRIPT main-dir/main-subdir call-script.sql อ่าน @@script.sql @ script.sql ผลผลิตที่คาดหวัง ถ้าฉันเริ่ม SQL * Plus จากx:\some\whereนั้นให้ทำ @main-dir/main-sub-dir/call-scripts ผลลัพธ์จะเป็น SCRIPT main-dir/main-subdir SCRIPT root สิ่งนี้คาดว่าจะเกิดขึ้นเนื่องจากสิ่งที่@ควรจะค้นหาพา ธ จากจุดเริ่มต้นของ SQL * Plus และ@@ควรจะค้นหาพา ธ จากไดเรกทอรีของสคริปต์ที่มี ผลลัพธ์ที่ไม่คาดคิด …

5
ดำเนินการตามขั้นตอนการจัดเก็บโดยอัตโนมัติหลังจากเหตุการณ์ฐานข้อมูลเรียกคืนใด ๆ
เป็นไปได้หรือไม่ที่จะให้SQL Server 2008 R2 Standardดำเนินการขั้นตอนการจัดเก็บโดยอัตโนมัติในฐานข้อมูลใดก็ตามที่มีการคืนค่าหรือเชื่อมต่อกับอินสแตนซ์ ฉันเข้าใกล้โซลูชันด้วยการสร้างทริกเกอร์ระดับเซิร์ฟเวอร์ที่ดำเนินการขั้นตอนการจัดเก็บในฐานข้อมูลที่กำหนดหลังจากเหตุการณ์ DDL CREATE_DATABASEหรือALTER_DATABASEถูกเรียกใช้ น่าเสียดายที่วิธีนี้ใช้ไม่ได้กับการสำรองข้อมูล databack ในการทำอย่างละเอียดเรามีขั้นตอนการจัดเก็บ 'ล้างข้อมูล' ที่มีอยู่ในทุกฐานข้อมูลที่เรากู้คืนและฉันกำลังมองหาวิธีที่จะดำเนินการนี้โดยอัตโนมัติเมื่อใดก็ตามที่การสำรองข้อมูลถูกเรียกคืนไปยังอินสแตนซ์ Googling ได้ชี้ให้ฉันกำหนดค่าการตรวจสอบหรือนโยบายใน SQL Server เพื่อรับฟังก์ชั่นนี้ แต่ฟีเจอร์เหล่านี้ค่อนข้างล้นหลามในตอนแรกดังนั้นฉันไม่สามารถบอกได้ว่า Audits หรือ Polices เป็นถนนที่เริ่มสืบสวน

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