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

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

7
Oracle - วิธีดูการเปลี่ยนแปลงที่ไม่ได้ตั้งใจบนตารางใด ๆ
ฉันกำลังดีบักผ่านกระบวนการแบทช์ในขณะนี้ที่ทำงบ DML จำนวนมาก แต่ไม่ได้กระทำทันที จะเป็นการดีหากคุณสามารถดูการเปลี่ยนแปลง "รอดำเนินการ" จากเซสชันอื่นในขณะที่การทำธุรกรรมไม่ได้เกิดขึ้น เป็นไปได้ไหม ตัวอย่าง: Insert into table myTable (col1, col2) values ("col1", "col2"); --Somehow view the pending transaction maybe by system view?.... ...other DML statements.... commit;

1
แผนการดำเนินการแสดงการดำเนินการ CONVERT_IMPLICIT ราคาแพง ฉันสามารถแก้ไขสิ่งนี้ด้วยการจัดทำดัชนีหรือฉันจำเป็นต้องเปลี่ยนตารางหรือไม่?
ฉันมีมุมมองที่สำคัญและช้ามาก ๆ ซึ่งรวมถึงเงื่อนไขที่น่าเกลียดบางอย่างเช่นนี้ในส่วนที่ ฉันยังทราบด้วยว่าการรวมนั้นเป็นการรวมแบบรวมและแบบช้าในvarchar(13)แทนที่จะเป็นฟิลด์จำนวนเต็ม แต่ต้องการปรับปรุงการค้นหาแบบง่ายด้านล่างที่ใช้มุมมองนี้: CREATE VIEW [dbo].[vwReallySlowView] AS AS SELECT I.booking_no_v32 AS bkno, I.trans_type_v41 AS trantype, B.Assigned_to_v61 AS Assignbk, B.order_date AS dateo, B.HourBooked AS HBooked, B.MinBooked AS MBooked, B.SecBooked AS SBooked, I.prep_on AS Pon, I.From_locn AS Flocn, I.Trans_to_locn AS TTlocn, (CASE I.prep_on WHEN 'Y' THEN I.PDate ELSE I.FirstDate END) …
24 sql-server  view 

1
รูปแบบตัวอักษรวันที่ / เวลา LANGUAGE และ DATEFORMAT ปลอดภัยอย่างไร
มันเป็นเรื่องง่ายที่จะแสดงให้เห็นว่าวันที่ / เวลารูปแบบหลายอื่น ๆกว่าสองต่อไปนี้เป็นความเสี่ยงที่จะเข้าใจผิดเนื่องจาก SET ภาษาตลาดหลักทรัพย์ DATEFORMAT หรือภาษาเริ่มต้นการเข้าสู่ระบบของ: yyyyMMdd -- unseparated, date only yyyy-MM-ddThh:mm:ss.fff -- date dash separated, date/time separated by T แม้รูปแบบนี้โดยไม่มี T อาจดูเหมือนรูปแบบ ISO 8601 ที่ถูกต้อง แต่มันล้มเหลวในหลายภาษา: DECLARE @d varchar(32) = '2017-03-13 23:22:21.020'; SET LANGUAGE Deutsch; SELECT CONVERT(datetime, @d); SET LANGUAGE Français; SELECT CONVERT(datetime, @d); ผล: Die Spracheneinstellung …

1
วิธีปฏิบัติที่ดีที่สุดในการลดขนาด Tempdb ในสภาพแวดล้อมการผลิต
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา แนวปฏิบัติที่เหมาะสมที่สุดที่จะใช้เมื่อลดขนาด db ชั่วคราวใน SQL Server 2008 คืออะไร การใช้สิ่งต่อไปนี้มีความเสี่ยงหรือไม่? use tempdb GO DBCC FREEPROCCACHE -- clean cache DBCC DROPCLEANBUFFERS -- clean buffers DBCC FREESYSTEMCACHE ('ALL') -- clean system cache DBCC FREESESSIONCACHE -- clean session cache DBCC SHRINKDATABASE(tempdb, 10); -- shrink …

2
pgAdmin การบำรุงรักษาถามโดยอะไร
โต้ตอบ pgAdmin สำหรับการเพิ่มการเชื่อมต่อที่ฐานข้อมูลใหม่ขอให้"การบำรุงรักษา DB" เพื่อให้สามารถเชื่อมต่อฉันตั้งค่าเป็นฐานข้อมูลที่ฉันต้องการเชื่อมต่อ (และฉันมีสิทธิ์ในการเชื่อมต่อ) ดังนั้นทำไมชื่อ "Maintenance DB" แทนที่จะเป็น "DB" หรือ "Database"

1
วิธีการตรวจสอบว่ามี [การเชื่อมต่อที่ไม่ได้ใช้งานกับ] ธุรกรรมที่ไม่มีข้อผูกมัดใน PostgreSQL หรือไม่
ตามความเห็นเกี่ยวกับคำถามนี้ฉันถามเกี่ยวกับการเชื่อมต่อที่ไม่ได้ใช้งานใน PostgreSQL 9.2ธุรกรรมบางอย่างที่ไม่ได้รับการติดต่อ (อาจเกี่ยวข้องกับการเชื่อมต่อที่ไม่ได้ใช้งาน) อาจทำให้เกิดปัญหาประสิทธิภาพการทำงาน เป็นวิธีที่ดีในการตรวจสอบว่ามีการทำธุรกรรมที่ปราศจากข้อผูกมัด (คะแนนโบนัสหากมีวิธีที่จะรู้ว่าพวกเขากำลังเชื่อมต่ออยู่ไม่ได้ใช้งานหรือไม่)? ขอบคุณมาก ๆ!

5
คอนโซล MySQL: Ctrl + C ทำให้ฉันบ้า
มีบางอย่างในคอนโซล MySQL ที่ทำให้ฉันบ้าคลั่ง เมื่อฉันกดctrl+ cเพื่อยกเลิกคำสั่งปัจจุบันที่กำลังพิมพ์เทอร์มินัลจะออก ในทุกฉันรู้ว่าขั้ว ( *nixขั้วPython, PostgreSQL) ctrl+ cยกเลิกคำสั่งปัจจุบันและctrl+ dออกจากสถานี ปัญหานี้ได้รับการรายงานในปี 2003และชนหลายครั้งตั้งแต่ มีวิธีการ: เปลี่ยนพฤติกรรมนี้หรือ โน้มน้าวใจทีม MySQL dev ว่ามันน่ารำคาญจริงๆเหรอ?


4
คุณจะระบุความเสียหายของตาราง InnoDB ได้อย่างไร
ฉันมีตารางบางส่วนที่แบ่งพาร์ติชันและมีดัชนีหลายรายการในสลาฟที่ถูกจำลอง หลังจากคัดลอกสแน็ปช็อต (ยืนยันความปลอดภัย) ไปยังทาสใหม่และอัปเกรด mysqld จาก 5.1.42 เป็น 5.5.15 และเริ่มการจำลองแบบใหม่ฉันได้รับ InnoDB ขัดข้องพร้อมข้อความแสดงข้อผิดพลาด "ตัวชี้ไม่ถูกต้อง ... " ข้อผิดพลาดเหล่านี้เกิดขึ้นในเซิร์ฟเวอร์ 2 เครื่องที่มีฮาร์ดแวร์และ O / S ที่แตกต่างกัน หลังจากทำงาน: ALTER TABLE .... COALESCE PARTION n; ปัญหาหายไปสำหรับตารางนั้น คำถามของฉันมีขนาดใหญ่กว่าในขอบเขตและนั่นคือ "คุณจะระบุความเสียหายของตาราง InnoDB ได้อย่างไร" หรือ rephrased "คุณประเมินสุขภาพของตาราง InnoDB อย่างไร" คือ"ตรวจสอบตาราง"เครื่องมือเดียวที่มีอยู่เพื่อแจ้งปัญหา pre-crash? ไม่แน่ใจว่ามีปัญหาหรือไม่ แต่เกิดปัญหาการทำงาน: รุ่น: ซ็อกเก็ต '5.5.15-55-log': พอร์ต '/opt/mysql.sock': 3306 เซิร์ฟเวอร์ …


2
'CONCAT' ไม่ใช่ชื่อฟังก์ชันในตัวที่ได้รับการยอมรับ
ลูกค้ารายงานว่าพวกเขากำลังทำงานบน SQL Server 2012 และเราได้ส่งแบบสอบถามทดสอบสำหรับการทดสอบก่อนส่งมอบครั้งสุดท้ายอย่างไรก็ตาม: 'CONCAT' ไม่ใช่ชื่อฟังก์ชันในตัวที่ได้รับการยอมรับ ฉันเข้าใจว่าCONCAT()เป็นฟังก์ชันในตัวใหม่ที่นำมาใช้ใน SQL Server 2012 ซึ่งดีและดี แต่ฉันถูกขอให้ย้อนกลับการเปลี่ยนแปลงของฉันเพื่อให้ 2008R2 นี้เข้ากันได้ภายใต้หน้ากากของ "ผู้ใช้ที่ดำเนินการแบบสอบถามอาจไม่ มีสิทธิ์ Transact-SQL ในการดำเนินการ " ดังนั้นฉันแค่พิสูจน์จุดของฉันว่าไคลเอนต์ส่วนใหญ่มี SQL Server รุ่นอื่นติดตั้งใน DEV มากกว่าที่พวกเขาทำใน PROD ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับการปฏิเสธการSELECT/EXECUTEอนุญาตโดยเฉพาะสำหรับฟังก์ชั่นที่มีมูลค่าสเกลาร์ในตัว แต่เป็นไปได้และถ้าเป็นเช่นนั้นผู้ใช้จะยังได้รับข้อความแสดงข้อผิดพลาดเดียวกันหรือไม่

4
การออกแบบฐานข้อมูลการบันทึกรายการสองครั้ง
ฉันกำลังสร้างซอฟต์แวร์บัญชี ฉันต้องบังคับใช้การบันทึกบัญชีสองครั้ง ฉันมีปัญหาคลาสสิกของหนึ่งแถวต่อการทำธุรกรรมเทียบกับสองแถว ลองมาเป็นตัวอย่างและดูว่าจะมีการนำไปใช้อย่างไรในทั้งสองสถานการณ์ พิจารณาบัญชีและบัญชีCash Rentเมื่อฉันจ่ายค่าเช่ารายเดือนฉันจะโอน $ 100 จากCashบัญชีของฉันไปยังRentบัญชีของฉัน หนึ่งแถวต่อธุรกรรม ในระบบแถวเดียวธุรกรรมดังกล่าวจะถูกจัดเก็บเป็น: การทำธุรกรรม tx_id | posting_date 1 | 23/05/2015 transaction_records id | tx_id | credit_account | debit_account | amount 1 | 1 | Cash | Rent | 100.00 สองแถวต่อธุรกรรม ในระบบสองแถวฉันจะต้องทำรายการบันทึกเดียวกันเพื่อสร้างระเบียนตรงกันข้ามที่เมื่อฉันสรุปผลรวมทั้งสองฉันจะได้ยอดเงินเป็นศูนย์ การทำธุรกรรม tx_id | posting_date 1 | 23/05/2015 transaction_records id | tx_id …

3
การใช้ตัวเลือก“ ชุดการสำรองข้อมูลจะหมดอายุ:” ในขณะที่สร้างงานฐานข้อมูลสำรองในแผนการบำรุงรักษา
ในขณะที่สำรองฐานข้อมูลฉันต้องการใช้ตัวเลือก " ชุดการสำรองข้อมูลจะหมดอายุ: " เพื่อลบ / เขียนทับการสำรองฐานข้อมูลเก่า ฉันไม่สามารถใช้ตัวเลือกนี้ คำแนะนำใด ๆ เกี่ยวกับวิธีการใช้ตัวเลือก "ชุดการสำรองข้อมูลจะหมดอายุ:" ในขณะที่สร้างแผนการบำรุงรักษาจะได้รับการชื่นชม

3
พาร์ติชันคีย์ต้องเป็นส่วนหนึ่งของคีย์หลักด้วยหรือไม่
ฉันกำลังแบ่งตารางตามคอลัมน์ที่ไม่ใช่คีย์หลักหรือไม่ ฉันได้อ่านข้อมูลที่ขัดแย้งกันในวันนี้แล้วว่าคอลัมน์พาร์ติชันต้องเป็นส่วนหนึ่งของคีย์หลักหรือไม่ ไส้ของฉันบอกว่าไม่ แต่ฉันไม่แน่ใจ 100% ดังนั้นคำถาม ... คอลัมน์พาร์ติชันจะต้องเป็นส่วนหนึ่งของหลักหรือไม่ มันแนะนำวิธีหนึ่งหรืออื่น ๆ ? ฉันต้องสร้างดัชนีสำหรับพาร์ติชันคีย์หรือไม่ DBMS ทำมันเองโดยอัตโนมัติหรือไม่?

1
เหตุใดแบบสอบถามนี้จึงไม่ใช้สปูลดัชนี
ฉันกำลังถามคำถามนี้เพื่อให้เข้าใจถึงพฤติกรรมของเครื่องมือเพิ่มประสิทธิภาพและเข้าใจขีด จำกัด รอบ ๆ ดัชนีสิ่งของ สมมติว่าฉันใส่จำนวนเต็มจาก 1 ถึง 10,000 ลงในกอง: CREATE TABLE X_10000 (ID INT NOT NULL); truncate table X_10000; INSERT INTO X_10000 WITH (TABLOCK) SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM master..spt_values t1 CROSS JOIN master..spt_values t2; และบังคับให้วงวนซ้อนกันเข้าร่วมกับMAXDOP 1: SELECT * FROM X_10000 a INNER JOIN …

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