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

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

2
แทรกวันที่หายไปจากแบบสอบถาม
ฉันจะแทรกวันที่ที่หายไปจากแบบสอบถามที่ฉันสร้างขึ้นได้อย่างไร ผลลัพธ์ด้านล่าง: Date Frequency 2014-05-18 5 2014-05-20 7 2014-05-25 7 2014-05-27 6 ฉันต้องการให้ผลลัพธ์มีวันที่หายไปโดยมีค่า 0 ดังที่แสดงด้านล่าง: Date Frequency 2014-05-18 5 2014-05-19 0 2014-05-20 7 2014-05-21 0 2014-05-22 0 2014-05-23 0 2014-05-24 0 2014-05-25 7 2014-05-26 0 2014-05-27 6 โปรดทราบว่าฉันได้เข้าถึงเซิร์ฟเวอร์เท่านั้น

1
สำรองข้อมูล Tail Log เมื่อทำการกู้คืน?
โดยทั่วไปเมื่อทำการกู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ที่ใช้งานจริงไปยังเซิร์ฟเวอร์ที่ไม่ได้ใช้งานจริงฉันจะใช้ตัวเลือก WITH REPLACE เช่นเดียวกับเมื่อฉันลืมฉันได้รับข้อผิดพลาดเกี่ยวกับ tail log ที่ไม่มีการสำรองข้อมูล ตาม MSDNฉันควรสำรองข้อมูล tail tail ก่อนที่จะกู้คืน: หากฐานข้อมูลออนไลน์และคุณวางแผนที่จะดำเนินการกู้คืนข้อมูลในฐานข้อมูลให้เริ่มต้นด้วยการสำรองข้อมูลส่วนท้ายของบันทึก เพื่อหลีกเลี่ยงข้อผิดพลาดสำหรับฐานข้อมูลออนไลน์คุณต้องใช้ตัวเลือก… WITH NORECOVERY ของคำสั่ง BACKUP Transact-SQL อันตรายหรือข้อเสียของวิธีที่ฉันทำมีอะไรบ้าง ทำไมการสำรองข้อมูล tail tail ไว้ก่อนจึงเป็นประโยชน์กับฉัน ฉันใช้ SQL Server 2008R2 แต่ฉันสันนิษฐานว่าแบบสอบถามนี้จะเกี่ยวข้องกับ SQL Server รุ่นใหม่กว่าส่วนใหญ่ดังนั้นจึงไม่ได้ติดแท็กเป็นเช่นนั้นในตอนแรก

1
วิธีที่ง่ายที่สุดในการแก้ไขรายการเดียวในคอลัมน์ XML?
เนื่องจากฉันเข้าใจ MS SQL Server Management Studio ไม่อนุญาตให้แก้ไข / แทนที่รายการในคอลัมน์ XML ผ่าน GUI โดยตรง (คัดลอก / วางไม่ทำงาน ฯลฯ ) ตัวเลือกที่ง่ายที่สุดในการแทนที่รายการเดียวในคอลัมน์ XML คืออะไร ฉันต้องใช้สิ่งที่แตกต่างจาก UPDATE / REPLACE สำหรับค่าคอลัมน์ XML หรือไม่

1
วิธีเพิ่มมูลค่าของคอลัมน์ด้วยเครื่องหมายอัญประกาศคู่ (เพิ่มเครื่องหมายคำพูดรอบสตริง)
ฉันมีตารางที่มีคอลัมน์ที่เป็นประเภทข้อความ ในคอลัมน์เป็นอักขระตัวเลข สิ่งที่ฉันพยายามทำให้สำเร็จคือห่ออักขระเหล่านั้นด้วยเครื่องหมายคำพูดคู่ ตัวอย่าง: NAME ID QTY Apples A1 1 Oranges O1 1 Foo F1 0 ผลลัพธ์ที่ออกมา: NAME ID QTY Apples A1 "1" Oranges O1 "1" Foo F1 "0" ฉันพยายามเรียกใช้คำสั่ง SELECT ต่อไปนี้ แต่ไม่ได้ให้ผลลัพธ์ที่ฉันต้องการ บางทีคุณสามารถแนะนำฉันในทิศทางที่ถูกต้อง SELECT `qty`, CHAR('"'|| qty ||'"') FROM `myTable`; ขอบคุณ
9 mysql  concat 

1
ค้นหาค่าที่ใช้งานของพารามิเตอร์ SQLNET.ORA บนเซิร์ฟเวอร์
ฉันจะค้นหาค่าที่แอ็คทีฟของพารามิเตอร์ SQLNET.ORAบนเซิร์ฟเวอร์ได้อย่างไร? ฉันรู้วิธีค้นหาไฟล์ SQLNET.ORA แต่ไม่รับประกันว่าจะใช้ค่าในไฟล์นั้นอย่างแข็งขัน การเปลี่ยนแปลงพารามิเตอร์อาจต้องรีสตาร์ทฟังและบางครั้งก็รีสตาร์ทฐานข้อมูล สำหรับการแก้ไขข้อบกพร่องฉันต้องการวิธีการที่แน่นอน 100% ว่าจะตั้งค่าพารามิเตอร์อย่างไรโดยไม่ต้องรีสตาร์ทอะไร นี่คล้ายกับคำถามนี้แต่ฉันกำลังมองหาวิธีการใด ๆเพื่อค้นหาค่าปัจจุบัน ไม่จำเป็นต้องเป็นแบบสอบถาม SQL นี่คือสิ่งที่ฉันได้ลองมาแล้วซึ่งทำให้ฉันเชื่อว่ามันเป็นไปไม่ได้: การติดตามไม่สร้างข้อมูลนั้น ดูเหมือนจะไม่มีอะไรในพจนานุกรมข้อมูล ไม่มีข้อมูลในคู่มือหรือ support.oracle.com เสนอความโปรดปราน แต่ไม่มีผู้รับ (แต่ฉันจะเสนอและให้รางวัลอื่นถ้าใครสามารถตอบได้)
9 oracle 

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

1
ALTER TABLE … SWITCHing จากตารางปกติไปยังตารางที่แบ่งพาร์ติชันล้มเหลว
รหัสด้านล่างทำสิ่งต่อไปนี้: สร้างฐานข้อมูล play_partition ใน C: \ TEMP สร้างสองตารางที่แบ่งพาร์ติชันเหมือนกันคือ play_table และ archive_play_table สลับพาร์ติชัน play_table 1 ไปยังไฟล์เก็บถาวรพาร์ติชัน 1 1 สร้าง temp_table แบบไม่แบ่งพาร์ติชั่นใหม่ที่มีโครงสร้างเดียวกันกับ play_table บนกลุ่มไฟล์เดียวกันกับ play_table partition 2 สลับ play_table_partition 2 เป็น temp_table พยายามเปลี่ยน temp_table กลับไปที่ play_table partition 2 และล้มเหลวด้วย ข่าวสารเกี่ยวกับ 4982 ระดับ 16 สถานะ 1 บรรทัด 64 คำสั่ง ALTER TABLE SWITCH ล้มเหลว …

1
การปรับปรุงการอัพเดทพร้อมกันใน Postgres
ฉันใช้คำสั่ง Postgres พร้อมกันเช่นนี้: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 แบบสอบถามแต่ละรายการมีผลต่อจำนวน K แถวคงที่และฉันไม่สามารถหาวิธีบังคับใช้ลำดับที่แถวนั้นได้รับการอัปเดตได้ฉันจะสิ้นสุดด้วยการหยุดชะงัก ขณะนี้ฉันแก้ไขปัญหาด้วยการบังคับใช้คำสั่งซื้อด้วยตนเอง แต่นั่นหมายความว่าฉันต้องดำเนินการค้นหามากกว่าที่ฉันต้องการในขณะที่เพิ่มความซับซ้อนในการค้นหาจาก O (log N + K) เป็น O (K log N) มีวิธีการปรับปรุงประสิทธิภาพโดยไม่สิ้นสุดความเสี่ยงต่อการหยุดชะงักหรือไม่? ฉันสงสัยว่าการแทนที่(baz)ดัชนีด้วย(baz, id)ดัชนีอาจทำงานได้หาก Postgres อัปเดตแถวในลำดับเดียวกันกับที่สแกนไปแล้วนี่เป็นวิธีการที่คุ้มค่าหรือไม่

2
ฉันจะสร้าง binlog-format = ROW เป็นค่าเริ่มต้นในไฟล์ /etc/my.cnf ได้อย่างไร
ฉันสามารถเรียกใช้แบบสอบถามSET GLOBAL binlog_format = 'ROW'และใช้ได้กับเซสชันนั้น ฉันจะทำให้การตั้งค่านี้ติดหลังจากหยุดและรีสตาร์ท MySQL ได้อย่างไร หมายเหตุ: ฉันอยู่ในรุ่น 5.5.19 ของ MySQL (พร้อม Moodle) และฉันเพิ่งอัพเกรดจาก MyISAM เป็น InnoDB ดังนั้นจึงต้องมีการตั้งค่าใหม่นี้ ฉันได้ลองเพิ่มคำสั่งสองคำสั่งนี้ (แยกกัน) ลงใน my.cnf: binlog-format = ROWและbinlog_format = ROWและไม่ทำงาน ฉันหยุดและเริ่ม MySQL ใหม่ทุกครั้งที่ฉันเปลี่ยน my.cnf ข้อผิดพลาดที่ฉันได้รับหากไม่มีการตั้งค่านี้เป็นข้อความแสดงข้อผิดพลาดสามานย์: ข้อมูลการดีบัก: ไม่สามารถดำเนินการคำสั่ง: เป็นไปไม่ได้ที่จะเขียนลงในบันทึกไบนารีเนื่องจาก BINLOG_FORMAT = STATEMENT และอย่างน้อยหนึ่งตารางใช้เอ็นจิ้นการจัดเก็บที่ จำกัด เฉพาะการบันทึกตามแถว InnoDB ถูก จำกัด ไว้ที่การบันทึกแถวเมื่อระดับการแยกธุรกรรมถูกอ่านยอมรับหรืออ่านไม่ได้รับการยอมรับ
9 mysql  innodb  my.cnf 

3
“ ปรับใช้ฐานข้อมูลกับ SQL Azure” หายไป
ฉันเพิ่งติดตั้ง SQL Server 2014 Express บนเวิร์กสเตชันที่ฉันมีและพยายามปรับใช้กับ SQL Azure ฉันเคยทำสิ่งนี้มาก่อนในเวิร์กสเตชันก่อนหน้าโดยใช้ SQL Server 2012 Express โดยทำสิ่งต่อไปนี้: คลิกขวาที่ฐานข้อมูล> งาน> "ปรับใช้ฐานข้อมูลกับ SQL Azure" บน SQL Server 2014 ตัวเลือกหายไปอย่างสมบูรณ์และแทนที่ตัวเลือกใหม่แทน: "ปรับใช้ฐานข้อมูลเป็น Windows Azure VM" ฉันไม่สามารถเข้าใจได้ว่าทำไมตัวเลือกสำหรับการปรับใช้กับ SQL Azure จึงขาดหายไป ตอนนี้มีบางสิ่งที่ต้องติดตั้งแยกต่างหากสำหรับ SQL Server 2014 หรือไม่ จากสิ่งที่ฉันอ่านทางออนไลน์ควรมีตัวเลือกทั้งสองสำหรับฉบับปี 2014 Microsoft ลบตัวเลือกนี้สำหรับ SQL Server 2014 Express หรือไม่

1
วิธีการ“ แฮ็คดร็อป” สแนปชอตฐานข้อมูลหลังจาก SQL Server อัพเกรดไม่เรียบร้อย
ฉันจัดการกับปัญหาที่ภาพรวมฐานข้อมูลจะไม่สามารถปรับตัวลดลงหลังจากที่ SQL Server ได้รับการอัพเกรดไป 2014 สแน็ปช็อตนั้นหมดอายุ แต่ไม่สามารถทิ้งได้ ตอนนี้ถึงแม้ว่ารายการเชื่อมต่อจะมีความคิดเห็นที่น่าผิดหวัง แต่ฉันคิดว่าสิ่งนี้จะได้รับการแก้ไขในที่สุด อย่างไรก็ตามฉันต้องจัดการกับเรื่องนี้ในไม่ช้า มีวิธีปล่อย snapshot ฐานข้อมูลที่ไม่สามารถลบได้เนื่องจากข้อผิดพลาดนี้หรือไม่ ฉันกลัวว่าฉันใช้วิธีการที่ทำเป็นเอกสารหมดแล้ว อาจใช้การแก้ไขที่ไม่มีเอกสารลงในตารางระบบ มีวิธีบังคับให้ฐานข้อมูล (สแน็ปช็อต) ถูกทิ้งหรือไม่?

2
ทำซ้ำบางตารางจากฐานข้อมูลหนึ่งไปยังอีก postgres
ฉันมีสถานการณ์ต่อไปนี้: ฉันมีเครื่องสามเครื่องที่ใช้ฐานข้อมูล postgresql เครื่องหนึ่งเก็บข้อมูลบัญชีลูกค้า (เรียกเครื่องนี้ C) อีกสองเครื่องเก็บข้อมูลบันทึกลูกค้า (เรียก L1 และ L2 เหล่านี้) สาเหตุของการแยกคือการแยกโหลดผ่านเครื่องหลายเครื่อง (ดังนั้นลูกค้าบางรายส่งข้อมูลการบันทึกไปที่ L1, บางเครื่องไปที่ L2 ... และอาจใช้เวลาสักครู่ L3, L4, ... ) เมื่อดึงข้อมูลการบันทึกในหลักการฉันต้องการที่จะสามารถเข้าร่วมระหว่างการเข้าสู่ระบบตารางใน Ln และตารางบัญชีลูกค้าใน C. ในความเป็นจริงฉันไม่สามารถเข้าร่วมแบบนี้ (และแม้ว่าฉันจะทำได้ฉันต้องการ เพื่อหลีกเลี่ยงการโหลด C) ความคิดของฉันคือการทำซ้ำตารางบน C ไปยังแต่ละ L1, L2, ... เพื่อให้ฉันสามารถรวม เท่าที่ตารางจาก C เกี่ยวข้อง C คือ master และ L1, L2, ... เป็นทาส แต่สำหรับตารางอื่น …

1
จะแก้ไข `postgresql.conf` ด้วย pgAdmin 3 ได้อย่างไร
วิธีแก้ไขไฟล์ 'postgresql.conf' ด้วยแอป pgAdmin อย่างไร ด้วย pgAdmin 1.18.1 บน Postgres 9.3.x เมื่อฉันเลือกFile> Open postgresql.confฉันจะได้รับกล่องโต้ตอบตัวเลือกไฟล์ และใช่ฉันเชื่อมต่อใน pgAdmin เป็น superuser 'postgres' ฉันรู้ว่าฉันทำสิ่งนี้ใน Postgres รุ่นเก่ากว่าแล้ว

1
pgBouncer ใช้งานได้ดี แต่บางครั้งก็ใช้งานไม่ได้
ฉันกำลังเรียกใช้ pgBouncer หน้าฐานข้อมูล postgres 9 ที่ไม่ว่าง สำหรับส่วนใหญ่เวลาทำงานได้ดี แต่ทุก ๆ สองสามชั่วโมงฉันจะได้รับอีเมลข้อผิดพลาดจากแอปพลิเคชันของฉันโดยมีข้อยกเว้นจาก psycopg2: OperationalError ('ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่สามารถกำหนดที่อยู่ที่ร้องขอเซิร์ฟเวอร์ทำงานบนโฮสต์ "neo-hulk" และยอมรับการเชื่อมต่อ TCP / IP บนพอร์ต 6432 หรือไม่') แอพนี้เป็นแอพที่มีคนทำงานคื่นฉ่ายหลายคนกำลังทำงานอยู่ เมื่อข้อผิดพลาดเหล่านั้นมาถึงฉันจะตรวจสอบ pgbouncer db และขนาดพูลอยู่ในขีด จำกัด หลังจากการทดลองบางอย่างฉันได้ตั้งค่าขนาดสูงสุดของพูลเป็น 400 และขนาดพูลเป็น 200 โหมดพูคือ "เซสชัน" (คำขอส่วนใหญ่จะกระทำโดยอัตโนมัติเกือบจะไม่มีธุรกรรม) อะไรทำให้ pgBouncer 'หายไป' อย่างนั้น? เป็นเพียงช่วงเวลาสั้น ๆ เท่านั้น (และโดยรวมแล้วเรากำลังพูดถึงคำขอจำนวนเล็กน้อยเมื่อเทียบกับปริมาณคำขอที่แท้จริงที่มอบให้) แต่คำขอที่ล้มเหลวนั้นมีความสำคัญ ขอบคุณ!

2
การสแกนคงที่ใช้เวลา 0 วินาทีหรือ 2-3 นาที
แบบสอบถามเช่นเดียวกับด้านล่างที่รับประกันว่าจะไม่ส่งคืนแถวใด ๆ ใช้เวลาตั้งแต่ 0 ถึง 160 วินาทีในเซิร์ฟเวอร์ของเรา: select col1, col2, col3 from tab1 where 0 = 1 สองสัปดาห์ที่ผ่านมาสิ่งนี้เกิดขึ้นหกครั้งในช่วงเวลา 48 ชั่วโมง เมื่อสัปดาห์ที่แล้วข้อความค้นหาเดียวกันใช้เวลาประมาณ 0 วินาที ฉันมีบันทึกของ SQL ของแอปพลิเคชันของเรา แต่ยังไม่พบผู้ต้องสงสัย นอกจากนี้ฉันคิดว่าคำถามอันดับสูงสุด 0 / โดยที่ 0 = 1 แบบสอบถามชนิดไม่เคยตีหน้าข้อมูลดังนั้นจึงควรต้านทานล็อคข้อมูลแถว / หน้า / ระดับตาราง? สกีมาไม่ได้ถูกแตะต้องโดย SQL (รู้) ใด ๆ เนื่องจากปัญหาไม่สอดคล้องกันและเซิร์ฟเวอร์อยู่ภายใต้ภาระงานหนักมากฉันต้องการทำความเข้าใจทฤษฎีเบื้องหลังสิ่งที่เกิดขึ้นก่อนที่จะแนบ SQL profiler การสืบค้นอื่น ๆ จะทำงานโดยไม่มีปัญหาในระหว่างการล่าช้า …

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