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

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

2
เลื่อนระดับแผนแบบสอบถามของการเรียกใช้ฟังก์ชันที่เขียนใน plpgsql
มันเป็นไปได้เมื่อใช้pgadminหรือplsqlจะได้รับถือของแผนแบบสอบถามสำหรับคำสั่ง SQL ดำเนินการภายในU ser d efined ฉตื่นเต้น (UDF) EXPLAINโดยใช้ ดังนั้นฉันจะได้รับแผนแบบสอบถามสำหรับการร้องขอ UDF โดยเฉพาะได้อย่างไร ฉันเห็น UDF ที่แยกออกไปเป็นการดำเนินการเดียวF()ใน pgadmin ฉันดูเอกสารแล้ว แต่หาอะไรไม่เจอ ขณะนี้ฉันกำลังดึงคำแถลงและเรียกใช้ด้วยตนเอง แต่สิ่งนี้จะไม่ถูกตัดออกไปสำหรับข้อความค้นหาขนาดใหญ่ ตัวอย่างเช่นพิจารณา UDF ด้านล่าง UDF นี้แม้ว่ามันจะมีความสามารถในการพิมพ์สตริงการสืบค้นของมันจะไม่ทำงานกับการคัดลอกวางเพราะมันมีตารางชั่วคราวที่สร้างขึ้นในท้องถิ่นซึ่งไม่มีอยู่เมื่อคุณวางและดำเนินการ CREATE OR REPLACE FUNCTION get_paginated_search_results( forum_id_ INTEGER, query_ CHARACTER VARYING, from_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, to_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, in_categories_ …


5
มีแนวคิดของ "รวมไฟล์" ใน SQL Server หรือไม่?
ฉันมีชุดของสคริปต์ที่ต้องทำงานในลำดับที่แน่นอน ฉันต้องการสร้าง "ไฟล์หลัก" ซึ่งแสดงรายการไฟล์อื่นทั้งหมดและลำดับที่ถูกต้อง โดยทั่วไปชอบไฟล์รวมจาก C ++ หรือ ASP / VBScript
19 sql-server 

1
เป็นไปได้ไหมที่จะเปลี่ยนรายการ ENUM ()
ฉันไม่แน่ใจว่าการเปลี่ยนรายการ ENUM () เป็นไปไม่ได้ดังนั้นฉันจึงทำการทดสอบ ใน MySQL v5.1.58 ฉันได้ทำการทดสอบตาราง InnoDB ที่มีหนึ่งฟิลด์ที่เรียกว่า 'บูล' ของประเภท ENUM ('ใช่', 'ไม่') จากนั้นฉันก็ประหาร ... ALTER TABLE `test` CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ... และมันก็ใช้งานได้ ฉันทำอะไรผิดหรือเปล่า? มันขึ้นอยู่กับเครื่องยนต์ db หรือไม่? ทำไมทุกคนบอกว่าไม่สามารถเปลี่ยนรายการ ENUM () เช่น. ที่นี่http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/ที่นี่
19 mysql  innodb 

2
กุญแจต่างประเทศสามารถทำให้เกิดการหยุดชะงักและขัดขวางการอ่าน SNAPSHOT ได้หรือไม่?
นี่เป็นคำถามติดตามจาก: /programming/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot-automatically ฉันยังคงมีสถานการณ์การหยุดชะงัก / หมดเวลาในโปรแกรมประยุกต์ ASP.NET READ_COMMITTED_SNAPSHOT ONเมื่อเรียกใช้รายงานขนาดใหญ่พร้อมกันถึงแม้ว่า ดังนั้นฉันมีสองคำถาม: ฉันจะตรวจสอบว่าภาพรวมธุรกรรมการแยกระดับการทำงานเป็นไปตามที่คาดไว้หรือไม่? ฉันสมมติว่าคีย์ต่างประเทศ (ในตารางของเว็บแอปพลิเคชันไปยังตารางรายงาน) มีหน้าที่รับผิดชอบการหยุดชะงัก ฉันพบบทความที่น่าสนใจนี้ : หมายเหตุ SQL Server จะได้รับการล็อกที่ใช้ร่วมกันเมื่อตรวจสอบคีย์ต่างประเทศแม้ว่าธุรกรรมกำลังใช้ snapshot ที่อ่านแล้ว (อ่านโดยใช้การกำหนดเวอร์ชันแถว) หรือระดับการแยกสแน็ปช็อต ระวังสิ่งนี้เมื่อตรวจสอบกราฟ deadlock จากทรานแซคชันเมื่อใช้ระดับการแยกทรานแซคชันเหล่านี้ หากคุณเห็นการล็อคที่ใช้ร่วมกันให้ตรวจสอบเพื่อดูว่าการล็อคนั้นเกิดขึ้นกับวัตถุที่อ้างอิงโดยคีย์ต่างประเทศหรือไม่ ฉันจะตรวจสอบได้อย่างไรว่า FK รับผิดชอบต่อสถานการณ์การหยุดชะงัก / หมดเวลาจริง ๆ หรือไม่นั่นหมายความว่าฉันสามารถลบกุญแจต่างประเทศเหล่านั้นเพื่อป้องกันการหยุดชะงัก (สิ่งที่จะเป็นความพยายามที่ยอมรับได้)? หมายเหตุ : ฉันแค่อ่านจากตารางที่ทำให้เกิดการหยุดชะงัก ความคิดใด ๆ ในหัวข้อนี้ชื่นชมอย่างมาก แก้ไข นี่คือการหยุดชะงักกราฟ บางทีใครบางคนอาจช่วยให้ฉันเข้าใจสิ่งที่ทำให้เกิดการหยุดชะงัก ดูเหมือนว่ามันจะเกิดขึ้นโดยไม่มีรายงานใด ๆ ที่ทำงานที่เกิดจากเว็บแอ็พพลิเคชันเท่านั้นเมื่อธุรกรรมสองรายการต้องการเขียนตารางเดียวกัน (หนึ่งการอัปเดตและหนึ่งการแทรกหนึ่งรายการ เหตุใดจึงมีการล็อกหน้าและวิธีเปิดใช้งานการล็อกแถวเท่านั้น? แทรก-SP …

2
ฉันควรใช้การเปรียบเทียบชุดใดในฮีบรูในพระคัมภีร์ไบเบิล?
ฉันควรใช้การเปรียบเทียบ SQL Server สำหรับภาษาฮีบรูในพระคัมภีร์ไบเบิลอย่างไร ฐานข้อมูลที่อยู่ระหว่างการพิจารณาจำเป็นต้องมีการกำกับกำกับ (เช่นเสียงสระ, เสียง, เสียงแหลม, ฯลฯ )

2
ข้อ จำกัด ค่าเริ่มต้นคุ้มค่าหรือไม่
ฉันมักจะออกแบบฐานข้อมูลตามกฎต่อไปนี้: ไม่มีใครอื่นนอกจาก db_owner และดูแลระบบสามารถเข้าถึงตารางฐานข้อมูล บทบาทของผู้ใช้จะถูกควบคุมที่ชั้นแอปพลิเคชัน ฉันมักจะใช้บทบาท db หนึ่งรายการเพื่อให้สิทธิ์เข้าถึงมุมมองโพรซีเดอร์และฟังก์ชันที่เก็บไว้ แต่ในบางกรณีฉันเพิ่มกฎที่สองเพื่อปกป้องโพรซีเดอร์ที่เก็บไว้บางส่วน ฉันใช้ TRIGGERS เพื่อตรวจสอบข้อมูลที่สำคัญในขั้นต้น CREATE TRIGGER <TriggerName> ON <MyTable> [BEFORE | AFTER] INSERT AS IF EXISTS (SELECT 1 FROM inserted WHERE Field1 <> <some_initial_value> OR Field2 <> <other_initial_value>) BEGIN UPDATE MyTable SET Field1 = <some_initial_value>, Field2 = <other_initial_value> ... END DML ดำเนินการโดยใช้กระบวนงานที่เก็บไว้: …

2
MySQL - varchar ความยาวและประสิทธิภาพ
VARCHARขนาดที่ประกาศออกมาเหมาะสมกับประสิทธิภาพหรือไม่? มีความแตกต่าง (ความเร็ว) ระหว่างVARCHAR(50)และVARCHAR(255)? หรือการกำหนดความยาวคือข้อ จำกัด ด้านตรรกะ / การออกแบบ?

3
คัดลอกแผนการบำรุงรักษาไปยังเซิร์ฟเวอร์อื่น
มีวิธีคัดลอกแผนการบำรุงรักษาจาก SQL Server 2012 หนึ่งไปยังอีกแผนหนึ่งหรือไม่ เซิร์ฟเวอร์ทั้งสองไม่สามารถเข้าถึงได้ผ่านสำเนาของ Studio จัดการในเวลาเดียวกัน (ในเครือข่ายที่แตกต่างกัน)

1
วิธีการรักษาลำดับขององค์ประกอบดั้งเดิมในอาร์เรย์ที่ไม่ผ่านการทดสอบ
รับสาย: 'ฉันคิดว่า PostgreSQL นั้นดี' ฉันต้องการทำงานกับคำแต่ละคำที่พบในสตริงนั้น โดยพื้นฐานแล้วฉันมีส่วนแยกต่างหากซึ่งฉันสามารถรับรายละเอียดคำศัพท์และต้องการที่จะเข้าร่วมอาร์เรย์ของสตริงนั้นในพจนานุกรมนี้ จนถึงตอนนี้ฉันมี: select word, meaning, partofspeech from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word from table t join dictionary d on t.word = d.wordname; สิ่งนี้ทำให้พื้นฐานของสิ่งที่ฉันหวังว่าจะทำได้สำเร็จ แต่ไม่ได้รักษาลำดับคำเดิมไว้ คำถามที่เกี่ยวข้อง: PostgreSQL ไม่ถูกต้อง () พร้อมหมายเลของค์ประกอบ

1
ฉันจะแปลงจาก Double Precision เป็น Bigint ด้วย PostgreSQL ได้อย่างไร
ฉันต้องการแปลงค่าของ Double Precision เป็น Bigint ด้วย PostgreSQL ฉันจะทำสิ่งนั้นได้อย่างไร ฉันลองแล้วto_bigint(myvalue)แต่ฟังก์ชั่นนั้นไม่มีอยู่จริง

2
วิธีการปิดใช้งาน“ เวลาที่เสร็จสมบูรณ์: …” ในหน้าต่างข้อความเซิร์ฟเวอร์ SQL
ทุกคำถามที่ฉันเรียกใช้ใน SSMS ต่อท้ายข้อความที่น่ารำคาญ: "เวลาที่เสร็จสมบูรณ์: ... " ฉันจะปิดการใช้งานข้อความนั้นได้อย่างไร?

2
วิธีการแบ่งพาร์ติชันตารางที่มีอยู่ใน postgres
ฉันต้องการพาร์ติชันตารางที่มี 1M + แถวตามช่วงวันที่ วิธีนี้ทำได้โดยไม่ต้องหยุดทำงานหรือเสี่ยงต่อการสูญเสียข้อมูล นี่คือกลยุทธ์ที่ฉันกำลังพิจารณา แต่เปิดรับข้อเสนอแนะ: ตารางที่มีอยู่คือต้นแบบและลูก ๆ สืบทอดมาจากตาราง เมื่อเวลาผ่านไปย้ายข้อมูลจากต้นแบบไปยังเด็ก แต่จะมีช่วงเวลาที่ข้อมูลบางอย่างอยู่ในตารางหลักและบางส่วนในเด็ก สร้างตารางหลักและตารางลูกใหม่ สร้างสำเนาของข้อมูลในตารางที่มีอยู่ในตารางลูก (ดังนั้นข้อมูลจะอยู่ในที่สองแห่ง) เมื่อตารางลูกมีข้อมูลล่าสุดให้เปลี่ยนส่วนแทรกทั้งหมดไปข้างหน้าเพื่อชี้ไปที่ตารางต้นแบบใหม่และลบตารางที่มีอยู่

3
วิธีที่ดีที่สุดในการสร้างมุมมองที่ปรากฏใน MySQL
ฉันใช้ MySQL 5.6 ฉันไม่สามารถสร้างมุมมองที่เป็นตัวเป็นตนเหมือนที่ทำได้ใน Oracle ฉันเห็นโซลูชันหนึ่งหรือสองอย่างเช่น Flexview ใครช่วยบอกวิธีที่ดีที่สุดในการสร้างมุมมองที่เป็นรูปธรรมใน MySQL (รีเฟรชอัตโนมัติเช่นเดียวกับใน Oracle) ด้วยความซับซ้อนขั้นต่ำได้หรือไม่

2
SQL Server ส่งคืน“ ข้อผิดพลาดทางคณิตศาสตร์มากเกินไปในการแปลงนิพจน์เป็นชนิดข้อมูล int”
เมื่อฉันเรียกใช้คำสั่งนี้ด้วย SUM() SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total] FROM dbo.t1 AS t WHERE t.Id > 0 AND t.Id < 101; ฉันได้รับ, Arithmetic overflow error converting expression to data type int. ความคิดเกี่ยวกับสาเหตุของมันคืออะไร? ฉันแค่ทำตามคำแนะนำในคำตอบนี้

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