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

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

2
การใช้ schema แยกกันส่งผลต่อประสิทธิภาพของ SQL Server 2008 อย่างไร
ฉันต้องการใช้ schema ที่แยกต่างหากสำหรับวัตถุที่มีวัตถุประสงค์ที่แตกต่างกันในฐานข้อมูล SQL Server 2008 ของเรา ตอนนี้เราใช้หลักการตั้งชื่อที่ทำให้มึนงงอย่างเป็นธรรมเพื่อระบุจุดประสงค์ของตารางหรือขั้นตอนการจัดเก็บและคำนำหน้าหมายความว่าเราต้องสแกนอักขระห้าหรือหกตัวก่อนที่เราจะเห็นจุดเริ่มต้นของชื่อที่ไม่ซ้ำกัน ฉันต้องการใช้สคีมาแยกต่างหากสำหรับตารางที่เพิ่งใช้เพื่อผลักดัน UI (เมนูบทบาทโดยบุคคล ฯลฯ ) และสำหรับผู้ที่เป็นตารางมิติเทียบกับตารางข้อเท็จจริง ฯลฯ คำถามของฉันคือจะมีผลกระทบต่อประสิทธิภาพจากการใช้หลาย schema (schemae?) ตรงข้ามกับ dbo เก่าที่ดีสำหรับทุกสิ่งหรือไม่

2
นักพัฒนาควรเจาะลึกลงไปในเรื่องใดของความรู้ DBA [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันต้องยอมรับคำถามที่ค่อนข้างกว้างดังนั้นฉันจะพยายาม จำกัด ให้แคบลง ใน บริษัท ของเราเราเป็นนักพัฒนา 3-4 คนและมีการติดตั้ง SQL Server ที่ทำงานอยู่ที่ไซต์ของลูกค้า (ขนาดฐานข้อมูลสูงสุด 100GB, ผู้ใช้งานพร้อมกัน 100 คน, แอปพลิเคชันอินทราเน็ต) ไม่มีใครในพวกเราที่มีประสบการณ์ที่ดีในการทำงาน / ดูแล / จัดการฐานข้อมูล (อะไรก็ตาม) ลูกค้าไม่ได้มากขนาดนั้น มันใช้งานได้จนถึงตอนนี้ แต่ฉันไม่สามารถบอกได้อย่างแน่นอนว่าเป็นเพราะเราทำทุกอย่างถูกต้องหรือถ้าเราไม่ได้ตีพื้นที่ / สถานการณ์ที่เราไม่ชำนาญ ดังนั้นฉันกำลังมองหาสิ่งที่สำคัญที่คุณต้องรู้เมื่อใช้ฐานข้อมูลจากจุด DBA ในมุมมองของ คุณรู้ข้อเท็จจริงที่ยากและรู้ว่าอะไรสำคัญที่สุดในชีวิตประจำวันของคุณ ฉันควรรวบรวมวิชาใดในวิชาใดบ้างฉันควรได้ยินเรื่องใดและฉันจะดูแลอะไรไม่ได้จนกว่าฉันจะเผชิญเป็นครั้งแรก ฉันตระหนักถึงคำถามวิศวกรซอฟต์แวร์และ DBAแต่ก็ไม่ใช่สิ่งที่ฉันกำลังมองหา นอกจากนี้ยังมีหนังสือจำนวนมากรอบตัว แต่ฉันอยากได้ยินจากผู้ที่มีประสบการณ์จริง

1
ข้อผิดพลาด PLS-00306: วิธีการหาอาร์กิวเมนต์ที่ผิด?
PLS-00306: หมายเลขหรือประเภทของอาร์กิวเมนต์ที่โทรหา 'string' ผิด สาเหตุ: ข้อผิดพลาดนี้เกิดขึ้นเมื่อการเรียกโปรแกรมย่อยที่มีชื่อไม่สามารถจับคู่กับการประกาศใด ๆ สำหรับชื่อโปรแกรมย่อยนั้น ชื่อโปรแกรมย่อยอาจสะกดผิดพารามิเตอร์อาจมีประเภทข้อมูลที่ไม่ถูกต้องการประกาศอาจผิดพลาดหรือการประกาศอาจวางไว้อย่างไม่ถูกต้องในโครงสร้างบล็อก ตัวอย่างเช่นข้อผิดพลาดนี้เกิดขึ้นหากฟังก์ชั่นสแควร์รูทในตัว SQRT ถูกเรียกด้วยชื่อที่สะกดผิดหรือด้วยพารามิเตอร์ของประเภทข้อมูลที่ไม่ถูกต้อง การดำเนินการ: ตรวจสอบการสะกดคำและการประกาศชื่อโปรแกรมย่อย นอกจากนี้ยังยืนยันว่าการโทรนั้นถูกต้องพารามิเตอร์นั้นเป็นประเภทข้อมูลที่ถูกต้องและหากไม่ใช่ฟังก์ชันในตัวการประกาศจะถูกวางไว้อย่างถูกต้องในโครงสร้างบล็อก ฉันจะระบุข้อโต้แย้งที่ผิดได้อย่างรวดเร็วได้อย่างไร ฉันมีขั้นตอนการจัดเก็บพร้อมพารามิเตอร์หลายสิบตัว มีวิธีง่าย ๆ ในการตรวจสอบความแตกต่างระหว่างขั้นตอนที่ใช้และขั้นตอนที่กำหนดหรือไม่ ฉันไม่ต้องการตรวจสอบทีละบรรทัด ..

2
การใช้เศษวัสดุมีประสิทธิภาพสำหรับชุดสะสมขนาดเล็กหรือไม่
ดูเหมือนว่าการแบ่งฐานข้อมูลจะดีมากถ้าฉันมีคอลเลกชันขนาดใหญ่ จะเกิดอะไรขึ้นถ้าฉันมีคอลเลกชันขนาดใหญ่พอสมควร สมมติว่าสำหรับการรวบรวม 100,000 000 เอกสาร (ความคิดเห็นไม่ใหญ่มาก) การ sharding นั้นมีประสิทธิภาพ นอกจากนี้ยังมีผลบังคับใช้กับ 10,000 คอลเลกชันที่มี 10,000 เอกสารแต่ละ? (ฉันคิดว่าคำถามนี้ยังคงใช้ได้สำหรับฐานข้อมูลแบบ table oriented ถ้าคุณแทนที่ collection ด้วยตารางและเอกสารด้วยแถวถ้าเป็นไปได้ฉันอยากจะรู้คำตอบเชิงทฤษฎีรวมทั้งคำตอบในสถานการณ์ MongoDB เฉพาะถ้าแตกต่างจากทฤษฎี ตอบ.)
11 mongodb 

2
ทำไม“ เริ่มทำธุรกรรม” ก่อน“ แทรกข้อความค้นหา” ล็อคทั้งตาราง
ฉันใช้ SQL Server 2005 Express ในสถานการณ์ฉันเพิ่มBegin Transactionคำสั่งก่อนINSERTคำสั่งในกระบวนงานที่เก็บไว้ เมื่อฉันเรียกใช้โพรซีเดอร์ที่เก็บไว้นี้จะล็อกทั้งตารางและการเชื่อมต่อพร้อมกันทั้งหมดแสดงการแสดงผลที่หยุดทำงานจนกระทั่งถึงเวลาที่INSERTเสร็จสิ้น ทำไมทั้งตารางถูกล็อคและฉันจะเอาชนะปัญหานี้ใน SQL Server 2005 Express ได้อย่างไร แก้ไข คำค้นหามีดังนี้: INSERT INTO <table2> SELECT * FROM <table1> WHERE table1.workCompleted = 'NO'

6
สิ่งที่อาจทำให้หมดเวลาสอบถามแปลกระหว่าง PHP และ MySQL?
ฉันเป็นผู้พัฒนาอาวุโสในแอปพลิเคชัน Software-as-a-Service ที่ลูกค้าหลายรายใช้กัน ซอฟต์แวร์ของเราทำงานบนคลัสเตอร์ของแอพพลิเคชันเซิร์ฟเวอร์ Apache / PHP ขับเคลื่อนโดยแบ็กเอนด์ MySQL เมื่อวันหนึ่งอินสแตนซ์ของซอฟต์แวร์โค้ด PHP ในการค้นหารายชื่อประเภทที่จะหมดเวลาเมื่อลูกค้ามีมากกว่า 29 ประเภท ฉันรู้ว่ามันไม่สมเหตุสมผล ไม่มีอะไรพิเศษเกี่ยวกับหมายเลข 30 ที่จะทำลายสิ่งนี้และลูกค้ารายอื่น ๆ ที่มีมากกว่า 30 หมวดหมู่อย่างไรก็ตามปัญหาคือทำซ้ำได้ 100% เมื่อการติดตั้งครั้งนี้มี 30 หมวดหมู่หรือมากกว่าและหายไปเมื่อมีน้อยกว่า 30 หมวด ตารางในคำถามคือ: CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(64) NOT NULL, `title` varchar(128) NOT NULL, …

3
วิธีชะลอการเริ่มต้นของ SQL Server
เมื่อเราบู๊ต SQL Server ไดร์ฟ SAN อาจยังไม่สามารถใช้งานได้ มีวิธีการหน่วงเวลา SQL Server โดยเริ่ม 1 นาทีหรือไม่ ตอนนี้เราต้องรีสตาร์ท SQL Server หลังจากเราบูตเซิร์ฟเวอร์

2
คำถามเกี่ยวกับ SARGability
ฉันแค่ต้องยืนยันว่าฉันเข้าใจบางอย่างถูกต้อง: ฉันเพิ่งดูคำถาม SO ที่ผู้ใช้โพสต์คำตอบใน Linq เช่น: from p in db.table where p.column.AddMinutes(1) > DateTime.Now select p สำหรับผู้ที่ไม่คุ้นเคยกับ Linq ฉันคาดหวังว่าผลลัพธ์ของคำแถลงนั้น (ไม่ได้ทดสอบอย่างยุติธรรม) จะเป็น: SELECT * FROM table t WHERE DATEADD(min, 1, t.column) >= GETDATE() ฉันโพสต์คำตอบนี้บอกว่าการจัดการ datetime ควรจะอยู่ในตัวแปร (ในกรณีนี้GETDATE()) ดังนั้นในความเป็นจริงคำสั่งควรสะท้อนถึงสิ่งที่ชอบ: SELECT * FROM table t WHERE t.column >= DATEADD(min, -1, GETDATE()) ในการตอบกลับของฉันบิตที่ฉันไม่แน่ใจตอนนี้ถือว่าต่อไปนี้: ดัชนีจะไม่ถูกใช้เนื่องจากการจัดการคอลัมน์ …
11 performance  linq 

2
@table_variable หรือ #temp_table
ฉันมีตัวแปรประเภทตารางที่กำหนดโดยผู้ใช้ขนาดใหญ่ที่มี 129 คอลัมน์ ฉันจะเก็บระเบียนประมาณ 2,000-3,000 รายการในตัวแปรตารางนี้ในแต่ละครั้งและส่งต่อไปยังกระบวนงานและฟังก์ชันที่เก็บไว้ต่าง ๆ เพื่อรับข้อมูลเพิ่มเติมและทำการแก้ไข ข้อมูลเพิ่มเติมและการแก้ไขใหม่เหล่านี้จะถูกเก็บไว้ในตัวแปรตารางใหม่ชนิดเดียวกันและกลับสู่ขั้นตอนการจัดเก็บต้นฉบับผ่านOUTPUTพารามิเตอร์ (นี่เป็นเพราะพารามิเตอร์ประเภทตารางสามารถส่งผ่านเป็นREADONLYเท่านั้น) นี่คือรหัสหลอกของฉัน: SP1 @tmp tableType { INSERT @tmp EXEC SP2 (@tmp) INSERT @tmp EXEC SP3 (@tmp) } ฉันควรใช้@table_variableหรือ#temp_table?

1
ฉันจะประมาณขนาดของตารางภายใน Schema (Oracle) ได้อย่างไร
ฉันพยายามประเมินขนาดตารางภายในสคีมาของฉัน (เป็น MB) นี่คือสิ่งที่ฉันมี: SELECT table_name, owner, last_analyzed FROM all_tables ฉันค่อนข้างใหม่กับ SQL ดังนั้นฉันจึงไม่รู้ว่าจะทำสิ่งนี้อย่างไร ขอขอบคุณ.
11 oracle 

4
เกินขนาดฟิลด์ในการออกแบบฐานข้อมูล
ฉันมีบางฟิลด์สำหรับตารางของฉันที่เป็นสตริงและในขณะนี้ขนาดของฟิลด์ส่วนใหญ่มีข้อ จำกัด ของอักขระที่ค่อนข้างสูง ตัวอย่างเช่น 100 อักขระสำหรับชื่อถนน มีโทษสำหรับการใช้สนามขนาดใหญ่หรือไม่? ถ้าฉันเปลี่ยนขีด จำกัด เป็น 30 อักขระสำหรับฟิลด์นี้เช่นจะมีการเพิ่มประสิทธิภาพหรือประสิทธิภาพด้วยขนาดหรือไม่ จะมีประมาณ 50 สาขาที่อาจเป็นผู้สมัครเพื่อการหดตัว ขอบคุณสำหรับคำแนะนำของคุณ
11 sql-server 

2
เหตุใดใน Oracle 11gR2 ฉันไม่สามารถปล่อยมุมมองที่ปรากฏขึ้นกับผู้ใช้รายเดียวกับที่สร้างขึ้นได้
ฉันสร้างมุมมองที่ปรากฏกับผู้ขอชื่อมันDI_TEST_AL MY_MVIEWมันปรากฏในUSER_OBJECTSตารางในขณะที่MATERIALIZED VIEWฉันพยายามวางมันฉันได้รับข้อความแสดงความสำเร็จ แต่วัตถุยังอยู่ที่นั่น อันที่จริงถ้าฉันพยายามที่จะสร้างมันขึ้นมาใหม่ฉันได้รับข้อผิดพลาดเช่น "วัตถุมีอยู่แล้ว" ฉันเห็นว่ามีตารางที่มีชื่อเดียวกันกับสคีมาอื่น ฉันคิดว่าไม่ควรทำให้เกิดปัญหา แต่ฉันรู้สึกอยากพูดถึงมัน นี่คือเอาต์พุต SQL * Plus: SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011 SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW'; OBJECT_NAME OBJECT_TYPE OWNER ----------- ----------------- ---------- MY_MVIEW MATERIALIZED VIEW DI_TEST_AL MY_MVIEW TABLE DIDEV11 SQL> DROP MATERIALIZED …


3
การจำลองแบบ MySQL ได้รับผลกระทบจากการเชื่อมต่อระหว่างกันที่มีความล่าช้าสูงหรือไม่
เรามี vanilla master และ MySQL setup ที่อยู่ในดาต้าเซ็นเตอร์ที่ต่างกันและสเลฟอื่นในดาต้าเซ็นเตอร์เดียวกับ master แบนด์วิดท์ระหว่างดาต้าเซ็นเตอร์นั้นค่อนข้างสูง (ในการวัดประสิทธิภาพเครือข่ายที่เราทำเราสามารถไปถึง 15MB / วินาที) แต่มีความหน่วงแฝงอยู่ประมาณ 28ms มันไม่สูงด้วยวิธีใด ๆ แต่มันจะสูงกว่าเวลาแฝงย่อยที่สองในดาต้าเซ็นเตอร์เดียวกัน ในบางครั้งเราพบความล่าช้าที่รุนแรง (2,000 วินาทีขึ้นไป) กับการลบสลาฟในขณะที่สลาฟท้องถิ่นจะอัปเดตอยู่เสมอ เมื่อดูที่ remote slave lagging, โดยปกติแล้วเธรด SQL จะใช้เวลาในการรอเธรด IO เพื่ออัพเดตล็อกรีเลย์ ต้นแบบแสดง "กำลังรอเน็ต" หรือบางอย่างในเวลาเดียวกัน ดังนั้นหมายความว่าเป็นเครือข่าย แต่เรายังคงมีแบนด์วิดธ์ฟรีในขณะที่เกิดเหตุการณ์นี้ คำถามของฉันคือสามารถแฝงระหว่างศูนย์ข้อมูลที่มีผลต่อประสิทธิภาพการจำลองแบบหรือไม่ slave io thread เพียงแค่สตรีมเหตุการณ์จนกระทั่งต้นแบบหยุดส่งหรือว่ามันรวมกำไรหลักระหว่างเหตุการณ์หรือไม่?

1
ความแตกต่างระหว่าง XtraBackup และ rsync คืออะไร?
ใช่ฉันจะวิ่งตามพวกเขาทั้งคู่ ... อย่างไรก็ตามฉันอยากจะรู้ว่า ... XtraBackup กำลังทำอะไรอยู่ซ้ำแล้วซ้ำอีก rsync -ac src dest? มีอะไรพิเศษเกี่ยวกับ XtraBbackup บ้าง? XtraBackup โต้ตอบกับ mysqld อย่างไร
11 mysql  backup  percona 

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