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

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

2
ทำไมคำสั่ง UPDATE SET REPLACE () จะจับคู่แถว แต่ไม่เปลี่ยนเลยและไม่มีคำเตือน?
ฉันกำลังค้นหาสตริงที่แน่นอนในเขตข้อมูลและต้องการแทนที่ด้วยสตริงใหม่ โดยเฉพาะฉันต้องการให้การอ้างอิงทั้งหมดไปยัง URL หนึ่งเปลี่ยนเป็น URL อื่น ฉันได้สร้างคำสั่ง SQL นี้ขึ้นและกำลังเรียกใช้งานที่mysql>พรอมต์ของ CentOS 5.5 โดยใช้ MySQL Community Server 5.1.54 update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%'); คำตอบคือ: Query OK, 0 rows affected (0.02 sec) Rows matched: 618 Changed: 0 Warnings: 0 ฉันจะติดตามสาเหตุที่ไม่มีการเปลี่ยนแปลงได้อย่างไร แก้ไข 1: ขอบคุณ Aaron Bertrand ฉันค้นพบว่าREPLACE()ไม่สามารถจัดการสัญลักษณ์แทนได้และฉันใช้ผิดทั้งหมด (คิดว่า: WHEREclause หายไป) นี่คือคำแถลงการปฏิรูปของฉัน: UPDATE [table] …
9 mysql  dml 

1
การเพิ่ม SPARSE ทำให้ตารางใหญ่ขึ้นมาก
ฉันมีตารางบันทึกทั่วไปแถวประมาณ 5 เมตร มีฟิลด์ "พิมพ์อย่างยิ่ง" ที่จัดเก็บประเภทเหตุการณ์และมีคอลัมน์ "พิมพ์จำนวนมาก" ที่ประกอบด้วยข้อมูลที่เกี่ยวข้องกับเหตุการณ์ นั่นคือความหมายของคอลัมน์ "ที่พิมพ์แบบแพ้ ๆ " นั้นขึ้นอยู่กับประเภทของเหตุการณ์ คอลัมน์เหล่านี้ถูกกำหนดเป็น: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, …


1
โมเดลพื้นฐานสำหรับการสร้างฐานข้อมูลกับผู้ใช้และกลุ่มคืออะไร?
ฉันกำลังพยายามหาวิธีที่ดีที่สุดสำหรับระบบความปลอดภัยขั้นพื้นฐานสำหรับเว็บไซต์ ฉันรู้ว่าฉันต้องการผู้ใช้และกลุ่ม ฉันคิดว่าฉันมี: user_table user_id user_name ... group_type group_id group_name parent_id ... group_table id user_id group_id คนแรกคือผู้ใช้คนที่สองคือกลุ่มและคนที่สามคือตารางตัวกลางที่เชื่อมต่อทั้งสอง ผู้ใช้หนึ่งรายมีหลายกลุ่ม เสียงนี้ตกลงไหม

2
ALTER INDEX และ DBCC DBREINDEX แตกต่างกันอย่างไร
เป็นเพียงข้อแตกต่างระหว่าง ALTER INDEX [index_name] on [object_name] REBUILD with (ONLINE=OFF, FILLFACTOR=90) และ DBCC DBREINDEX([dbname], 90) เพียงว่าคำสั่ง DBCC จะทำดัชนีดัชนีทั้งหมดใหม่บนตารางทั้งหมดในฐานข้อมูลหรือไม่

1
วิธีรับประสิทธิภาพคิวรีที่แม่นยำ
ฉันพยายามปรับปรุงประสิทธิภาพของโพรซีเดอร์ที่เก็บไว้ เมื่อฉันรัน SP มันจะเสร็จสิ้นเกือบจะในทันทีราวกับมีบางสิ่งบางอย่างถูกแคช ฉันถูกบอกให้ใช้ SQL สองบรรทัดต่อไปนี้ก่อนดำเนินการ SP ใน SSMS: DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE เมื่อฉันรัน SP ด้วยโค้ดสองบรรทัดด้านบน SP จะเสร็จสิ้นในเวลาประมาณ 8 วินาที อย่างไรก็ตามนี่เป็นการให้เวลาดำเนินการจริงแก่ฉันจริง ๆ หรือไม่ ฉันจะรู้ได้อย่างไร

2
ประเภทข้อมูลที่จะเก็บข้อมูล XML ใน: VARCHAR (MAX) หรือ XML
ฉันกำลังกำหนด schema สำหรับชุดทรัพยากรใหม่โดยใช้ SQL Server 2008 ... ในกรณีนี้แต่ละระเบียน ( เช่นแถว ) จะต้องเก็บชิ้นส่วน XML เมื่อเวลาผ่านไป; แม้ว่าจะไม่บ่อย ฉันจะต้องสืบค้น XML เพื่อค้นหาองค์ประกอบและค่าแอตทริบิวต์ หากปล่อยทิ้งไว้กับสิ่งที่ฉันทำเองฉันมักจะใช้ประเภทข้อมูลxmlแม้ว่าฉันจะถูกชักนำให้เชื่อว่าสิ่งนี้มีปัญหา นั่นทำให้ฉันมีคำถาม รับสถานการณ์นี้สิ่งที่ปัจจัยที่ฉันควรจะมีการพิจารณาเมื่อพยายามที่จะตัดสินใจระหว่างการจัดเก็บ XML ในXMLคอลัมน์เทียบกับvarchar (MAX)คอลัมน์ ถ้ามันช่วย ... นี่คือรายละเอียดเพิ่มเติม: ไม่มีการตัดสินใจเกี่ยวกับการใช้สคีมาสำหรับชิ้นส่วนเหล่านี้ ( เช่น XSD's ) ขนาดของชิ้นส่วนจะมีตั้งแต่เล็กไปจนถึงใหญ่มาก XML ทั้งหมดจะมีรูปแบบที่ดี ในแต่ละวันจะมีการรวบรวมชิ้นส่วนได้มากถึง 10,000 ชิ้นพร้อมการสนับสนุนการสืบค้นออนไลน์ที่จำเป็นสำหรับ ~ 3 เดือน การค้นหากับ XML จะเกิดขึ้นตลอดทั้งวัน แต่ควรอยู่ในสถานะที่มีคำสั่งประเภทนี้พร้อมกันเล็กน้อย

6
วิธีที่ดีที่สุดในการทำแผนที่การแมปฐานข้อมูลสำหรับการย้ายข้อมูล [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังทำงานในโครงการที่มีองค์ประกอบฐานข้อมูลการแมปสำหรับการย้ายข้อมูลและฉันต้องการทราบว่ามีเครื่องมืออื่นที่ใช้ในการทำสิ่งนี้หรือไม่ Excel เป็นวิธีที่ยืดหยุ่นมากในการบันทึกการจับคู่อย่างง่าย แต่ฉันสงสัยว่าใครมีวิธีการเฉพาะที่พวกเขาติดตามหรือเครื่องมืออื่น ๆ ที่พวกเขาใช้ที่พวกเขาสามารถแนะนำได้หรือไม่

2
หมดเวลาธุรกรรม SQL Server
มีวิธีใดใน SQL Server 2008 R2 ที่จะทำให้เกิดการหมดเวลาสำหรับการปรับเปลี่ยนฐานข้อมูลที่เกี่ยวข้องกับการทำธุรกรรมหรือไม่? เรามีสถานการณ์ที่รหัสแอปพลิเคชันของเราแฮงค์หรือส่งข้อยกเว้นและไม่สามารถย้อนกลับหรือคอมมิท นี่เป็นสาเหตุให้เซสชันอื่นหยุดทำงานเพื่อรอธุรกรรมให้เสร็จสมบูรณ์

1
ไคลเอนต์หมดเวลาในขณะที่แบบสอบถาม MySQL ยังคงทำงานอยู่?
เราประสบปัญหาที่แบบสอบถามแบบอ่านอย่างเดียวทำงานผ่าน MySQL workbench หมดเวลาจากมุมมอง UI ของผู้ใช้และยังคงทำงานบนเซิร์ฟเวอร์ (และเห็นได้ชัดว่าใช้ทรัพยากรมากขึ้นเรื่อย ๆ ) จนกว่าเราจะหยุดทำงาน คำถาม มีวิธีมาตรฐานในการจัดการกับปัญหาประเภทนี้ใน MySQL? มีสาเหตุพื้นฐานที่เราต้องหลีกเลี่ยงหรือไม่?

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

5
ใช้งานเกิน / ใช้งาน schema อย่างถูกต้อง?
ต้องถามคำถามนี้ในStackoverflowฉันสงสัยว่าสิ่งที่ฉันทำไปนั้นถูกต้องหรือเป็นแนวปฏิบัติที่ดีที่สุด โดยทั่วไปวัตถุทุกชิ้นที่ฉันสร้างจะเข้าสู่สคีมาพร้อมกับชื่อสคีมาที่สะท้อนถึงการใช้งาน ตัวอย่างเช่นฉันมี schemas AuditและAdmin(ท่ามกลางคนอื่น ๆ ) dboนี้ในการเปิดใบไม่มีวัตถุใน ตกลงไหม มีอะไรอีกบ้างที่ฉันต้องทำ?

2
ตรวจสอบกิจกรรม MySQL ต่อฐานข้อมูลหรือไม่
วิธีที่ดีที่สุดในการตรวจสอบกิจกรรมในฐานข้อมูลแต่ละเซิร์ฟเวอร์ของฉันคืออะไร ฉันลอง mtop / mytop ซึ่งแสดงกิจกรรมแบบเรียลไทม์ แต่ก็ไม่ค่อยมีประโยชน์ในการดูข้อความค้นหาทั้งหมดที่ดำเนินการ ฉันเปิดใช้งานบันทึก MySQL แต่ไม่มีตัวเลือกที่จะแยกพวกเขาต่อฐานข้อมูล คุณใช้เครื่องมืออะไรในการตรวจสอบเซิร์ฟเวอร์ MySQL

1
ฉันจะดูข้อความค้นหาหลังจากใช้กฎได้อย่างไร
จากเอกสาร - 37.3.1.1 "กฎข้อแรกทีละขั้น" CREATE TABLE shoelace_log ( sl_name text, -- shoelace changed sl_avail integer, -- new available value log_who text, -- who did it log_when timestamp -- when ); CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data WHERE NEW.sl_avail <> OLD.sl_avail DO INSERT INTO shoelace_log VALUES ( NEW.sl_name, NEW.sl_avail, …

3
เอาท์พุทอธิบายให้เห็นว่าดัชนีของฉันไม่ได้ถูกใช้
ฉันได้ตั้งค่าตารางของฉันด้วยดัชนีเฉพาะบน done_status (done_status = INT): เมื่อฉันใช้: EXPLAIN SELECT * FROM reminder WHERE done_status=2 ฉันได้รับมันกลับมา: id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 ตัวเตือนที่เรียบง่าย ALL done_status NULL NULL NULL 5 การใช้ตำแหน่ง แต่เมื่อฉันออกคำสั่งนี้: EXPLAIN SELECT * FROM reminder WHERE done_status=1 ฉันได้รับผลตอบแทนดังต่อไปนี้: id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 การแจ้งเตือนที่เรียบง่ายอ้างอิงจากเสร็จ _status done_status 4 const 2 มันEXPLAINแสดงให้ฉันเห็นว่ามันใช้ …
9 mysql 

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