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

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

2
อัปเดตคอลัมน์ด้วยข้อมูลจากตารางอื่น
ฉันกำลังทำงานกับปัญหาที่ซับซ้อน แต่ฉันจะทำให้ปัญหานี้ง่ายขึ้น ฉันมีสองตาราง A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] และฉันต้องการอัปเดตที่สาม: C [ID, column1, column2,column3] ฉันกำลังปรับปรุงตารางที่สามโดยใช้แบบสอบถามนี้ UPDATE C set column1=t.firstTab, column2=t.secondTab, column3=t.thirdTab from (select A.column1 as firstTab, B.column2 as secTab, (A.column1 + B.column2) thirdTab from A, B limit 1; ) as t ; ฉันได้: UPDATE 0 …

3
เขตข้อมูลจากการคำนวณ SQL ในทั้ง SELECT และ GROUP BY clause
บ่อยครั้งในการสืบค้นฐานข้อมูล MS SQL Server ของฉันฉันต้องสร้างเขตข้อมูลจากการคำนวณเช่นนี้ (CASE WHEN A.type = 'Workover' THEN 'Workover' ELSE (CASE WHEN substring(C.category, 2, 1) = 'D' THEN 'Drilling' WHEN substring(C.category, 2, 1) = 'C' THEN 'Completion' WHEN substring(C.category, 2, 1) = 'W' THEN 'Workover' ELSE 'Other' END) END) จากนั้นฉันต้องจัดกลุ่มผลลัพธ์ของฉันตามฟิลด์ที่คำนวณนี้ (อื่น ๆ ) ดังนั้นฉันมีการคำนวณที่เหมือนกันทั้งใน SELECT และ GROUP …
11 sql-server 

2
วิธีการวางตารางที่ว่างเปล่า
เป็นไปได้หรือไม่ที่จะลบตารางที่ว่างเปล่าทั้งหมดออกจากฐานข้อมูลขนาดใหญ่ของฉัน (mysql)? ฉันกำลังมองหาคำสั่ง sql ที่จะลบตารางว่างเหล่านั้นทั้งหมดโดยอัตโนมัติ ขณะนี้ฉันมี 305 ตารางในชุดข้อมูลของฉันและประมาณ 30% ของพวกเขาเป็นตารางเปล่าเก่าที่จะไม่ใช้ในแอปพลิเคชันใหม่ของฉัน เพียงชี้แจง ตารางทั้งหมดเป็นประเภท = MyISAM
11 mysql  myisam 

4
ไม่สามารถเข้าถึงเซิร์ฟเวอร์ MySQL ระยะไกลที่ทำงานบน Mac OS X
ฉันมีเซิร์ฟเวอร์ MySQL ที่ทำงานบนคอมพิวเตอร์ที่ทำงานซึ่งใช้ Mac OS X Maverick ฉันต้องการเข้าถึงจากคอมพิวเตอร์ที่บ้านซึ่งมี Mac OS Maverick ด้วย จากเทอร์มินัลถ้าใน 1 แท็บฉัน ssh ไปยังคอมพิวเตอร์ที่ทำงานของฉันและปล่อยให้เซสชัน ssh นั่งอยู่ที่นั่นโดยไม่ต้องว่างจากนั้นอีกแท็บอื่นฉันสามารถเข้าถึงเซิร์ฟเวอร์ MySQL ได้ อย่างไรก็ตามหากไม่มีการใช้งาน ssh ฉันจะได้รับข้อผิดพลาด ข้อผิดพลาด 2003 (HY000):ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน 'SERVER_IP_ADDRESS' (60) ฉันพยายามแก้ไขmy.cnfไฟล์บนเซิร์ฟเวอร์โดยการคอมเม้นต์ bind-address หรือกำหนดมัน0.0.0.0แต่มันใช้งานไม่ได้ ทำไมถึงเป็นเช่นนั้น ฉันจะกำหนดค่าเซิร์ฟเวอร์เพื่อให้อนุญาตการเข้าถึงระยะไกลโดยไม่ต้องเรียกใช้ ssh บนไคลเอนต์ได้อย่างไร มีคนช่วยได้ไหม

4
การใช้งาน CPU สูงบนเซิร์ฟเวอร์ SQL - คิวรีช้า [ปิด]
คำถามนี้ไม่น่าจะช่วยผู้เข้าชมในอนาคต มันเกี่ยวข้องเฉพาะกับพื้นที่ทางภูมิศาสตร์ขนาดเล็กช่วงเวลาที่เฉพาะเจาะจงหรือสถานการณ์ที่แคบเป็นพิเศษซึ่งโดยทั่วไปไม่สามารถใช้ได้กับผู้ชมทั่วโลกของอินเทอร์เน็ต สำหรับความช่วยเหลือในการทำคำถามนี้มากขึ้นบังคับในวงกว้างไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน6 ปีที่ผ่านมา MS SQL Server ของเราใช้ซีพียูประมาณ 95% หลังจากรีสตาร์ทเซิร์ฟเวอร์ (ฮาร์ดแวร์) หรือรีสตาร์ท SQL-Service การใช้งานจะเป็น 0% และจะเพิ่มขึ้นอย่างช้า ๆ ในระยะเวลา 1-3 วัน ขึ้นอยู่กับว่ามีการใช้งานเท่าใด เมื่อเกิน 80% ทุกคำถามจะช้ามาก เว็บไซต์ของเราจัดการกับข้อความค้นหาจำนวนมากดังนั้นบางรายการใช้เวลา 45-60 วินาที หลังจากรีสตาร์ท (การใช้งาน CPU น้อยกว่า 80%) จะใช้เวลา 11-20 วินาทีในการค้นหาเดียวกัน ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ฉันได้อ่านออนไลน์แล้วที่ affinity masks สามารถปรับการใช้งาน CPU แต่การตั้งค่า Affinity ถูกปิดใช้งาน ฉันไม่สามารถเปลี่ยนได้ เป็นเพราะฉันมีเพียง 1 โปรเซสเซอร์หรือไม่ มีเคล็ดลับมากมายเกี่ยวกับข้อความค้นหาด้วยตนเอง …

2
วิธีการออกแบบดัชนีสำหรับคอลัมน์ที่มีค่า NULL ใน MySQL
ฉันมีฐานข้อมูลที่มี 40 ล้านรายการและต้องการเรียกใช้แบบสอบถามด้วยWHEREประโยคต่อไปนี้ ... WHERE `POP1` IS NOT NULL && `VT`='ABC' && (`SOURCE`='HOME') && (`alt` RLIKE '^[AaCcGgTt]$') && (`ref` RLIKE '^[AaCcGgTt]$') && (`AA` RLIKE '^[AaCcGgTt]$') && (`ref` = `AA` || `alt` = `AA`) LIMIT 10 ; POP1เป็นคอลัมน์ลอยที่ยังสามารถเป็น NULL POP1 IS NOT NULLควรแยกประมาณ 50% ของรายการนั่นเป็นเหตุผลที่ฉันใส่ไว้ในตอนเริ่มต้น เงื่อนไขอื่น ๆ ทั้งหมดลดจำนวนเพียงเล็กน้อย ในบรรดาคนอื่น ๆ ฉันออกแบบดัชนีpop1_vt_sourceซึ่งดูเหมือนจะไม่ได้ใช้ในขณะที่ใช้ดัชนีที่vtเป็นคอลัมน์แรก …
11 mysql  index 

2
ไม่สามารถวางตารางได้เนื่องจากกำลังรอการล็อกเมตาดาต้า
เราพยายามที่จะวางตารางหนึ่ง แต่มันถูกแขวนและเมื่อเราเห็นคำสั่ง 'SHOW PROCESSLIST' มันแสดงว่า 'กำลังรอเมตาดาต้าล็อคข้อมูล' แม้ว่าเราจะไม่สามารถทำการดำเนินการใด ๆ ในตารางนั้น ไม่มีใครรู้วิธีการแก้ไขหรือไม่

3
ประสิทธิภาพที่แย่ลงบนเซิร์ฟเวอร์ใหม่
เราอยู่บนเซิร์ฟเวอร์เฉพาะ (quad-core เดียว, RAM 6 GB) และกำลังย้ายไปยังเซิร์ฟเวอร์เฉพาะใหม่ (2x hex-core, 32 GB RAM) ทั้งสองเป็น Windows Server 2008, SQL Server 2008 ประสิทธิภาพการทำงานบนเซิร์ฟเวอร์ใหม่นั้นแย่กว่าเซิร์ฟเวอร์เก่าที่ช้ากว่าเล็กน้อย ในการทดสอบแอปพลิเคชัน ASP.NET ของเราทำงานช้าลง 10 - 20% การเรียกใช้ข้อความค้นหาราคาแพงทีละรายการด้วยสถิติ IO และสถิติเวลาแสดงเวลาที่ผ่านไปมากกว่า 10 - 20% บนเซิร์ฟเวอร์ใหม่ โปรไฟล์การสืบค้นข้อมูล SQL แสดงการใช้งาน CPU ที่สูงขึ้นสำหรับการสืบค้นที่มีราคาแพง ตัวจัดการงานบนเซิร์ฟเวอร์ใหม่แสดงให้เห็นว่า sqlserver.exe ใช้ RAM ขนาด 22 GB แต่ค่าของ CPU ยังคงต่ำอยู่เสมอ ฉันได้อัปเดตสถิติทั้งหมดสร้างใหม่หรือจัดดัชนีใหม่ ฯลฯ …

2
LATCH_EX รอทรัพยากร METADATA_SEQUENCE_GENERATOR
เรามีกระบวนการที่สร้างรายงานสินค้าคงคลัง ในฝั่งไคลเอ็นต์กระบวนการแยกจำนวนเธรดผู้ปฏิบัติงานที่สามารถกำหนดค่าได้เพื่อสร้างกลุ่มข้อมูลสำหรับรายงานที่สอดคล้องกับที่เก็บหนึ่งแห่งจากหลาย ๆ ที่ (อาจเป็นพันหลายสิบโดยทั่วไป) เธรดผู้ปฏิบัติงานแต่ละคนเรียกบริการเว็บที่ดำเนินการตามขั้นตอนที่เก็บไว้ กระบวนการฐานข้อมูลสำหรับการประมวลผลแต่ละกลุ่มรวบรวมข้อมูลลงในตาราง #Temporary ในตอนท้ายของแต่ละชิ้นประมวลผลข้อมูลจะถูกเขียนไปยังตารางถาวรใน tempdb ในที่สุดเมื่อสิ้นสุดกระบวนการหนึ่งเธรดที่ฝั่งไคลเอ็นต์ร้องขอข้อมูลทั้งหมดจากตาราง tempdb ถาวร ยิ่งผู้ใช้ที่เรียกใช้รายงานนี้ยิ่งได้รับช้า ฉันวิเคราะห์กิจกรรมในฐานข้อมูล ณ จุดหนึ่งฉันเห็นคำขอ 35 รายการที่ถูกบล็อกทั้งหมดถูกบล็อก ณ จุดหนึ่งในกระบวนการ SPIDs ทั้งหมดเหล่านี้ได้ในคำสั่งของ 50 มิลลิวินาทีรอประเภททรัพยากรLATCH_EX METADATA_SEQUENCE_GENERATOR (00000010E13CA1A8)SPID หนึ่งมีทรัพยากรนี้และอื่น ๆ ทั้งหมดกำลังบล็อก ฉันไม่พบสิ่งใดเกี่ยวกับทรัพยากรการรอนี้ในการค้นหาเว็บ ตารางใน tempdb ที่เราใช้อยู่มีIDENTITY(1,1)คอลัมน์ SPID เหล่านี้กำลังรอคอลัมน์ประจำตัวหรือไม่ เราสามารถใช้วิธีการใดในการลดหรือกำจัดการบล็อก เซิร์ฟเวอร์เป็นส่วนหนึ่งของคลัสเตอร์ เซิร์ฟเวอร์กำลังเรียกใช้ SQL Server 2012 Standard Edition SP1 64 บิตใน Windows 2008 R2 …

2
เหตุใดการปิดใช้งานดัชนีคลัสเตอร์จึงทำให้ตารางไม่สามารถเข้าถึงได้
เมื่อดัชนีถูกปิดใช้งานคำจำกัดความยังคงอยู่ในแคตตาล็อกระบบ แต่ไม่ได้ใช้อีกต่อไป SQL Server ไม่รักษาดัชนี (เนื่องจากข้อมูลในการเปลี่ยนแปลงตาราง) และดัชนีไม่สามารถใช้เพื่อตอบสนองแบบสอบถาม หากปิดใช้งานดัชนีแบบคลัสเตอร์ตารางทั้งหมดจะไม่สามารถเข้าถึงได้ เหตุใดจึงไม่สามารถเข้าถึงข้อมูลโดยตรงจากตารางที่ทิ้งต้นไม้ทรี B (น่าจะเป็นโดยการสแกนตารางทีละแถว) มันจะไม่เหมาะสมกว่าการทำให้ข้อมูลไม่สามารถเข้าถึงได้อย่างสมบูรณ์? มันเป็นคำถามเชิงทฤษฎีล้วนๆ - ฉันจะไม่ทำอย่างนั้นจริง ๆ มันไม่ใช่สถานการณ์หรือสิ่งที่ต้องทำฉันแค่อยากรู้ว่าทำไมสิ่งนั้นถึงเป็นเช่นนั้นลองพิจารณาคำถามภายใน

4
ฉันขอแน่ใจได้หรือไม่ว่าสองคอลัมน์ไม่มีค่าเดียวกัน
หากฉันมีตารางที่มีลักษณะเช่นนี้ CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT, aa INT NOT NULL, bb INT NOT NULL, PRIMARY KEY (id), UNIQUE KEY (aa, bb), CONSTRAINT aa_ref FOREIGN KEY (aa) REFERENCES bar (id), CONSTRAINT bb_ref FOREIGN KEY (bb) REFERENCES bar (id) ) มีวิธีที่จะทำให้แน่ใจว่าaa != bbนอกเหนือจากการใช้ตรรกะระดับแอปพลิเคชันหรือบังคับให้ทริกเกอร์ล้มเหลวก่อนที่จะแทรก?
11 mysql-5.1 

2
ทำไมเราไม่สามารถเขียนคำสั่ง ddl ลงในบล็อก PL / SQL ได้โดยตรง
ทำไมเราไม่สามารถเขียนคำสั่ง ddl ได้โดยตรงใน PL / SQL block เช่นเมื่อฉันเขียน CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; // error END test; / แต่, CREATE OR REPLACE PROCEDURE test IS BEGIN execute immediate 'truncate table table_name'; // works fine END test; / ทำไมคนที่สองถึงทำสำเร็จ
11 oracle  plsql  ddl 

2
สคีมาเปลี่ยนกลุ่ม "สถานะว่าง" หรือพวกมันถูกจัดการอย่างโปร่งใสหรือไม่?
องค์กรของฉันวางแผนที่จะนำกลุ่มความพร้อมใช้งานของ SQL Server 2012 มาใช้และฉันพยายามที่จะเข้าใจว่าจะมีผลกระทบอย่างไร (ถ้ามี) ในกระบวนการอัปเกรดแอปพลิเคชันของเรา เราปล่อยการอัปเดตแอปพลิเคชันในรอบ 8 สัปดาห์และการเปิดตัวใด ๆ อาจรวมถึงการเปลี่ยนแปลงสคีมาและ / หรือการย้ายข้อมูล สิ่งที่ฉันพยายามทำความเข้าใจคือว่าโซลูชัน HA / DR จะจัดการกับการเปลี่ยนแปลง schema อย่างโปร่งใสหรือไม่ (คอลัมน์ใหม่, ดัชนีเพิ่มเข้ากับ Secondaries) หรือเป็นการแทรกแซงด้วยตนเองที่จำเป็นในการสร้าง schema ในแต่ละอินสแตนซ์ ส่วนการโยกย้ายข้อมูลที่ฉันสมมติว่ามีการจัดการอย่างโปร่งใส แต่ต้องการยืนยันเช่นกัน ฉันเดาว่าฉันกำลังสร้างสมมุติฐานแบบครอบคลุมว่าพฤติกรรมเหล่านี้ไม่แตกต่างกันไปตามการกำหนดค่ากลุ่มความพร้อมใช้งานซึ่งอาจเป็นเท็จเช่นกัน โปรดแจ้งให้เราทราบ โดยสังเขป; ในแอปพลิเคชันของฉันที่ระบุฉันสามารถเปลี่ยนตารางที่มีขนาดใหญ่มาก (10s ถึง 100s ของเรคคอร์ด) โดยการเพิ่มคอลัมน์ลงไป บางคอลัมน์อาจเป็น "ใหม่สุทธิ" เพื่อให้สามารถใช้ประโยชน์จากฟังก์ชันการเปลี่ยนแปลงแบบแผนของ Enterprise Online ได้ คอลัมน์อื่นอาจเป็นการ refactoring ของคอลัมน์ที่มีอยู่ (FullName ได้รับการแบ่งเป็น FirstName …

2
ปัญหาการปรับให้เหมาะสม: คีย์ผสมคลัสเตอร์เงื่อนไขแฟล็กและการรวมดัชนี
สามตาราง: product: กับคอลัมน์: ( a, g, ...a_lot_more... ) a: PK, clustered g: bit-column main: กับคอลัมน์: ( c, f, a, b, ...a_lot_more... ) c: PK, clustered f: bit-column (a, b): UQ lookup กับคอลัมน์: ( a, b, c, i ) (a, b): PK, clustered a: FK to product(a) c: UQ, FK to …

2
ช้าสั่งซื้อด้วย LIMIT
ฉันมีคำถามนี้: SELECT * FROM location WHERE to_tsvector('simple',unaccent2("city")) @@ to_tsquery('simple',unaccent2('wroclaw')) order by displaycount ฉันมีความสุขกับมัน: "Sort (cost=3842.56..3847.12 rows=1826 width=123) (actual time=1.915..2.084 rows=1307 loops=1)" " Sort Key: displaycount" " Sort Method: quicksort Memory: 206kB" " -> Bitmap Heap Scan on location (cost=34.40..3743.64 rows=1826 width=123) (actual time=0.788..1.208 rows=1307 loops=1)" " Recheck Cond: (to_tsvector('simple'::regconfig, unaccent2((city)::text)) …

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