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

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

2
ปริมาณการใช้หน่วยความจำของ SQL Server 2012 ภายนอกพูลบัฟเฟอร์
ฉันมีอินสแตนซ์ของ SQL Server 2012 SP2 Enterprise Edition ที่ใช้หน่วยความจำประมาณ 20GB สูงกว่าค่าสูงสุด ขีด จำกัด หน่วยความจำ อินสแตนซ์ถูก จำกัด ที่ 65GB แต่หน่วยความจำกายภาพที่ใช้งานจากแบบสอบถามด้านล่างแสดง 86GB SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM sys.dm_os_process_memory; GO เซิร์ฟเวอร์มีอยู่จริงโดยมี 2 NUMA โหนด มีวิธีที่ฉันสามารถค้นหาสิ่งที่ใช้หน่วยความจำภายนอกของบัฟเฟอร์พูล (ฉันสมมติว่าเกิดอะไรขึ้น) นี่คือผลลัพธ์ของ DBCC MEMORYSTATUS: - และนี่คือขีด จำกัด หน่วยความจำที่ตั้งไว้: - ขอบคุณล่วงหน้า. ปรับปรุง: - ฉันเรียกใช้แบบสอบถามที่แอรอนแนะนำ SELECT TOP (20) * FROM sys.dm_os_memory_clerks …

1
รับการบันทึกขั้นต่ำเมื่อโหลดข้อมูลลงในตารางชั่วคราว
แม้หลังจากอ่านคู่มือการโหลดข้อมูลฉันยังคงไม่แน่ใจว่าจำเป็นต้องเพิ่มตาราง TABLOCK คำใบ้ลงในตารางชั่วคราวที่ว่างเปล่าซึ่งกำหนดด้วยดัชนีคลัสเตอร์เพื่อรับการบันทึกขั้นต่ำ เห็นได้ชัดว่าตาราง temp นั้นสร้างขึ้นใน TempDB ซึ่งทำงานในโหมดการกู้คืนแบบง่ายดังนั้นฉันจึงคิดว่ามันเป็นตัวเลือกที่สมบูรณ์แบบสำหรับการบันทึกที่น้อยที่สุด แต่ฉันไม่สามารถหาข้อความเพื่อยืนยันได้ เป็นตารางชั่วคราวที่เป็นตัวเลือกสำหรับการบันทึกขั้นต่ำและถ้าเป็นเช่นนั้นมันก็คุ้มที่จะเพิ่ม TABLOCK hint ตามที่แนะนำสำหรับตารางถาวรหรือไม่

3
ฉันจะทราบได้อย่างไรว่าตารางมีอยู่ใน search_path ปัจจุบันด้วย PLPGSQL หรือไม่
ฉันกำลังเขียนสคริปต์การตั้งค่าสำหรับแอปพลิเคชันที่เป็น addon สำหรับแอปพลิเคชันอื่นดังนั้นฉันต้องการตรวจสอบว่ามีตารางสำหรับแอปพลิเคชันอื่นอยู่หรือไม่ ถ้าไม่ฉันต้องการให้ข้อผิดพลาดที่เป็นประโยชน์แก่ผู้ใช้ อย่างไรก็ตามฉันไม่ทราบว่าสคีมาใดที่จะถือตาราง DO LANGUAGE plpgsql $$ BEGIN PERFORM 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = current_setting('search_path') AND c.relname = 'foo' AND c.relkind = 'r'; -- not sure if I actually need this or not... IF NOT FOUND THEN RAISE 'This …

2
การใช้งานฐานข้อมูลของ ORDER BY ในแบบสอบถามย่อย
ฉันกำลังใช้แอปพลิเคชัน (MapServer - http://mapserver.org/ ) ที่ล้อมรอบคำสั่ง SQL เพื่อให้คำสั่ง ORDER BY อยู่ในแบบสอบถามภายใน เช่น SELECT * FROM ( SELECT ID, GEOM, Name FROM t ORDER BY Name ) as tbl แอปพลิเคชันมีไดรเวอร์ฐานข้อมูลที่แตกต่างกันมากมาย ฉันใช้ไดรเวอร์ MS SQL Server เป็นหลักและ SQL Server 2008 ส่วนใหญ่จะเกิดข้อผิดพลาดหากพบคำสั่งซื้อในแบบสอบถามย่อย จาก MS Docs (แม้ว่าจะใช้กับ SQL Server 2000 แต่ก็ดูเหมือนว่าจะใช้): เมื่อคุณใช้ส่วนคำสั่ง ORDER BY ในมุมมองฟังก์ชั่นอินไลน์ตารางที่ได้รับหรือแบบสอบถามย่อยมันไม่รับประกันผลลัพธ์ที่สั่งซื้อ …

2
ต้องการส่งอีเมล HTML ที่จัดรูปแบบผ่านจดหมายฐานข้อมูลใน SQL Server 2008 R2
ความต้องการของฉันคือการสร้างอีเมลอัตโนมัติเป็น (อีเมล HTML ที่จัดรูปแบบผ่านทางจดหมายฐานข้อมูล) ความต้องการขั้นพื้นฐานเสร็จสมบูรณ์เมื่องานถูกเรียกมันแทรกข้อมูลลงในตารางและข้อมูลที่ได้รับการกำหนดให้ส่งเป็นอีเมล แต่ตอนนี้ไคลเอนต์ร้องขอในรูปแบบนี้ รูปแบบปัจจุบันที่ฉันทำ PO Date:2014-11-26 PO ID:PO1 SAP Ref:0001106102 GRN:1067 DealerID:045 Dealer Name:ABC(Pvt)Ltd. 2 Status:New รูปแบบที่ร้องขอโดยไคลเอ็นต์ในตารางเช่นเดียวกับรูปแบบ PO Date |PO ID| SAP Ref| GRN|DealerID|Dealer Name|Status นี่คือ SQL Query ที่ฉันใช้เพื่อแทรกข้อมูลลงใน Email_Table (_ERROR_MAIL) และสิ่งนี้จะต้องเป็นไปตามความต้องการ IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ImpCancelledGRN') BEGIN …

2
วิธีที่ดีที่สุดในการสร้างไดอะแกรมฐานข้อมูลสำหรับ SQL Azure โดยไม่ต้องติดตั้ง SQL Server คืออะไร
ฉันมีฐานข้อมูลบน SQL Azure และต้องการสร้างไดอะแกรมฐานข้อมูล แต่ไม่ต้องการติดตั้งเซิร์ฟเวอร์ SQL และคัดลอกฐานข้อมูลเป็นต้นมีวิธีใดที่ฉันสามารถทำได้ที่ทุกคนรู้

1
PostgreSQL: วางคอลัมน์จากมุมมอง
ฉันมีVIEWที่ที่ฉันพยายามสร้างสคริปต์วิวัฒนาการเพื่อให้ฉันสามารถเพิ่มคอลัมน์ลงไปได้ ส่วนนั้นใช้ได้ดี; เพิ่มคอลัมน์แล้วก็ได้ อย่างไรก็ตามการย้อนกลับไม่ทำงาน ลบคอลัมน์ที่เพิ่มล่าสุดล้มเหลวด้วยERROR: cannot drop columns from viewข้อความ ปัญหาคือว่ามุมมองนี้มีการอ้างอิงจำนวนมากทั้งจากและไปดังนั้นฉันไม่สามารถเพียงแค่DROP CASCADEสิ่งที่ยี้! มีเหตุผลทำไมฉันไม่สามารถลบคอลัมน์ที่เพิ่มใหม่จากที่กำหนดVIEW? จากนั้นฉันจะทำอย่างไรเพื่อให้ภารกิจนี้สำเร็จ (หมายเหตุ: สถานการณ์นี่คือสิ่งที่พวกเขาเป็น แต่ฉันเป็นอย่างดีสามารถดูสถานการณ์ที่คล้ายกันหรือที่รู้จักลดลงคอลัมน์จากมุมมองในกรณีอื่น ๆ อีกมากมาย)

3
ใช้คิวรีช้ากับพันล้านแถวตาราง // ดัชนี
เนื่องจากฉันเป็นนักพัฒนาอายุน้อยและไม่ชำนาญในการใช้ฐานข้อมูล (PostgreSQL 9.3) ฉันพบปัญหาบางอย่างเกี่ยวกับโครงการที่ฉันต้องการความช่วยเหลือ โครงการของฉันเกี่ยวกับการรวบรวมข้อมูลจากอุปกรณ์ (มากถึง 1,000 อุปกรณ์ขึ้นไป) ซึ่งทุกอุปกรณ์กำลังส่งข้อมูลหนึ่งบล็อกทุกวินาทีซึ่งจะสร้างประมาณ 3 ล้านแถวต่อชั่วโมง ขณะนี้ฉันมีตารางขนาดใหญ่หนึ่งตารางที่ฉันเก็บข้อมูลขาเข้าของทุกอุปกรณ์: CREATE TABLE data_block( id bigserial timestamp timestamp mac bigint ) เนื่องจากมีข้อมูลหลายประเภทที่บล็อกข้อมูลสามารถ (หรือไม่สามารถ) รวมจึงมีตารางอื่น ๆ ที่อ้างอิงdata_blockตาราง CREATE TABLE dataA( data_block_id bigserial data CONSTRAINT fkey FOREIGN KEY (data_block_id) REFERENCES data_block(id); ); CREATE TABLE dataB(...); CREATE TABLE dataC(...); CREATE INDEX index_dataA_block_id …

1
“ การเข้ารหัสลับข้อมูล” เทียบกับ“ บังคับใช้การเข้ารหัสลับโพรโทคอล” ใน SQL Server
ฉันพยายามที่จะเข้าใจว่าการตั้งค่าที่แตกต่างกันมีผลต่อพฤติกรรมของการสื่อสารกับเซิร์ฟเวอร์ของฉันอย่างไร บนเซิร์ฟเวอร์ฉันได้ติดตั้ง CA ที่ลงนามด้วยตนเองพร้อมกับใบรับรองการแลกเปลี่ยนที่ออกซึ่งได้รับการกำหนดค่าให้ใช้งานโดยบริการ SQL ของฉัน ตอนแรกฉันต้องการเห็นการเชื่อมต่อนี้ล้มเหลวเมื่อไม่ได้ติดตั้งรูท CA ในไคลเอนต์ แต่สิ่งที่ฉันทำมันดูเหมือนจะทำงานอยู่แล้ว เพื่อให้เข้าใจได้ดีขึ้นว่าเหตุใดฉันจึงพยายามทำรายการตัวเลือกทั้งหมดและผลกระทบที่ควรจะเกิดขึ้น แต่ฉันไม่แน่ใจว่าฉันเข้าใจถูกต้องแล้ว ... ใครช่วยกรุณาแก้ไขและเติมส่วนที่ขาดหายไปได้ไหม เมื่อเปิดใช้งานการตั้งค่า "การเข้ารหัสบังคับ " บน SQL Server: ในทางปฏิบัติสิ่งนี้เหมือนกับการตั้งค่าEncrypt=True;TrustServerCertificate=True;ในสตริงการเชื่อมต่อของฉัน ลูกค้าไม่ได้บอกว่าควรใช้การเข้ารหัสหรือไม่และควรให้เซิร์ฟเวอร์เชื่อถือได้หรือไม่ ตัวเลือกนี้สามารถใช้เพื่อเข้ารหัสอินสแตนซ์ของบริการแต่ละรายการ รองรับ certs ที่ลงนามด้วยตนเองโดยไม่มี CA เมื่อเปิดใช้งานการตั้งค่า" บังคับใช้การเข้ารหัสลับโพรโทคอล " บน SQL Server: การเชื่อมต่อไคลเอนต์ทั้งหมดไปยังบริการทั้งหมดบนเซิร์ฟเวอร์ถูกเข้ารหัส ต้องใช้ใบรับรองการแลกเปลี่ยนที่ออกโดย CA ที่เชื่อถือได้ที่มีอยู่ในไคลเอนต์และเซิร์ฟเวอร์ เมื่อใช้การตั้งค่า" Force Protocol Encryption " บนไคลเอ็นต์: ไคลเอนต์เดี่ยวนี้จะบังคับใช้ SSL และต้องมีหนังสือรับรองการแลกเปลี่ยนที่ออกโดย CA ที่เชื่อถือได้ที่มีอยู่ในเครื่องนี้ หากไม่มีการเชื่อมต่อนี้จะล้มเหลว เมื่อเปิดใช้งานการตั้งค่า …

2
ธุรกรรมใน PostgreSQL ผ่านทาง `psycopg2` ต่อเคอร์เซอร์หรือต่อการเชื่อมต่อหรือไม่?
ฉันทำงานกับ PostgreSQL 9.3 โดยใช้psycopg2API ฐานข้อมูล ฉันได้ตั้งค่า API API ในระดับการแยกขั้นต่ำ (โหมด "autocommit") และกำลังจัดการธุรกรรมของฉันเองโดยตรงผ่าน SQL ตัวอย่าง: cur = self.conn.cursor() cur.execute("BEGIN;") cur.execute("SELECT dbId, downloadPath, fileName, tags FROM {tableName} WHERE dlState=%s".format(tableName=self.tableName), (2, )) ret = cur.fetchall() cur.execute("COMMIT;") โดยพื้นฐานแล้วธุรกรรมที่เริ่มต้นด้วยการcur.execute("BEGIN;")จำกัด เพียงเคอร์เซอร์นั้นหรือสำหรับการเชื่อมต่อทั้งหมด ( self.conn.cursor())? สิ่งที่ซับซ้อนยิ่งกว่าที่ฉันกำลังทำอยู่นั้นเกี่ยวข้องกับการดำเนินการฐานข้อมูลแยกกันหลายครั้ง เนื่องจากทั้งหมดนี้อยู่ในคลาสที่มีการเชื่อมต่อเป็นสมาชิกจึงสะดวกยิ่งขึ้นในการสร้างเคอร์เซอร์ภายในแต่ละฟังก์ชั่น อย่างไรก็ตามฉันไม่แน่ใจว่าการสร้างเคอร์เซอร์ภายในธุรกรรมได้อย่างไร โดยพื้นฐานแล้วถ้าธุรกรรมต่อการเชื่อมต่อฉันสามารถสร้างเคอร์เซอร์จำนวนมากได้ทันทีภายในธุรกรรม หากพวกเขาต่อเคอร์เซอร์นั่นหมายความว่าฉันต้องผ่านเคอร์เซอร์ไปทุกที่ มันคืออะไร เอกสารไม่ได้สัมผัสกับสิ่งนี้แม้ว่าความจริงที่ว่าคุณสามารถโทรได้connection.commit()ทำให้ฉันมั่นใจอย่างเป็นธรรมว่าการควบคุมการทำธุรกรรมนั้นเป็นการเชื่อมต่อ
10 postgresql 

4
แสดงชื่อตาราง + จำนวนเรคคอร์ดสำหรับแต่ละตารางในฐานข้อมูล mysql innodb
วิธีแสดงรายการตารางทั้งหมดในฐานข้อมูลปัจจุบันพร้อมกับจำนวนแถวของตาราง กล่าวอีกนัยหนึ่งคุณสามารถคิดถึงคำถามที่จะเกิดขึ้นกับสิ่งนี้ใน mysql หรือไม่? +------------------------++------------------------+ | Tables_in_database | Number of rows | +------------------------++------------------------+ | database 1 | 1000 | | database 2 | 1500 | +------------------------++------------------------+ วิธีการที่แตกต่างยินดีต้อนรับ
10 mysql  innodb  select  count 

2
การดำเนินการแตกต่างสมมาตรใน Transact-SQL?
ฉันได้รู้จักกันเสมอเกี่ยวกับUNIONผู้ประกอบการใน SQL แต่เมื่อเร็ว ๆ นี้พบว่ามีผู้ประกอบการชุดอื่น ๆและINTERSECT EXCEPTฉันไม่สามารถค้นหาผู้ดำเนินการที่ดำเนินการชุดใหญ่ชุดที่สี่ความแตกต่างแบบสมมาตร (เช่นตรงข้ามกับINTERSECT) ดูเหมือนว่าฉันจะได้รับผลลัพธ์ที่ต้องการโดยใช้สิ่งที่ชอบ SELECT Field FROM A UNION SELECT Field FROM B EXCEPT SELECT Field FROM A INTERSECT SELECT Field FROM B (สมมติว่าฉันมีสิทธิ์เหนือกว่า) หรือด้วยการเข้าร่วมต่อต้านแบบเต็ม: SELECT A.Field, B.Field FROM A FULL JOIN B ON B.Id = A.Id WHERE B.Id IS NULL OR A.Id IS NULL …
10 sql-server  t-sql 

3
กู้คืน MySQL Tables จากไฟล์. ibd, .frm และ mysqllogbin
ด้วยเหตุผลบางอย่างเมื่อฉันพยายามเปิดตารางของฉันที่เก็บไว้ใน.frmและ.ibdไฟล์ (ไม่ว่าจะใน MySQL หรือ phpmyadmin) มันทำให้ฉันมีข้อผิดพลาดทางไวยากรณ์หรือมันบอกว่ามันไม่มีอยู่ ฉันได้อ่านโพสต์อื่นที่มีปัญหาคล้ายกันนี้ แต่ฉันไม่ทราบวิธีตรวจสอบว่าinnodb_file_per_tableเปิดใช้งานหรือไม่และโดยรวมฉันสับสนจริงๆ ฉันแปลงสำเนาmysql-bin.000002ไฟล์เป็นไฟล์ txt ด้วยดังนั้นฉันเห็นว่าข้อมูลจากฐานข้อมูลของฉันไม่สูญหายทั้งหมด ฐานข้อมูลถูกสร้างขึ้นเมื่อปีที่แล้ว ฉันมีmysql-bin.00000ไฟล์เหล่านี้ 6 ไฟล์ แต่ด้วยเหตุผลบางอย่างไฟล์.000002ใหญ่ที่สุด ตอนนี้ฉันมี.ibdและ.frmไฟล์สำหรับฐานข้อมูลทั้งหมดของฉัน แต่ฉันกำลังสูญเสียว่าฉันสามารถคืนค่ากลับสู่ MySQL หรืออย่างน้อยก็เป็นสิ่งที่ฉันสามารถอ่านได้ ฉันใช้ WampServer 2.4 และ MySQL 5.6.12 บน Windows 2003 Server นอกจากนี้ฉันควรจะดาวน์โหลดปลั๊กอินใน InnoDB ด้วยหรือไม่

1
MySQL Collation utf8_unicode แตกต่างกัน
แต่ฉันได้อ่านเกี่ยวกับความสำคัญของการจัดเรียง MySQL และสิ่งที่ฉันได้เรียนรู้เกี่ยวกับความเข้ากันได้และความถูกต้องจนถึงขณะนี้ 4 สิ่งเหล่านี้ดูเหมือนจะเป็นทางออกที่ดีที่สุดของฉัน utf8_unicode_ci utf8_unicode_520_ci utf8mb4_unicode_ci utf8mb4_unicode_520_ci จากความเข้าใจของฉัน uft8mb4 จะดีสำหรับตัวละครด้วยภาษา mutli (ตัวละคร) การสนับสนุน (ญี่ปุ่นเช่น) uf8 รองรับ 3 ไบต์เท่านั้นในขณะที่ uf8mb4 รองรับ 4 ไบต์ ดังนั้นดูเหมือนว่าตัวเลือกที่ชัดเจนจะเป็น uf8mb4 แต่การจับนั้นดูเหมือนว่าคุณมีขีดจำกัดความยาว (ประณาม! ฉันต้องการเค้กของฉันและกินมันด้วย) ซึ่งเป็นข้อกังวลเล็กน้อย (ฉันคิดว่า) จากนั้นคุณคำนึงถึงมาตรฐาน 520; ซึ่งเสนอเพิ่มเติมจากสิ่งเล็ก ๆ น้อย ๆ ที่ฉันสามารถหาได้ แต่แน่นอนว่าเป็นปัญหาฉันสามารถหาได้น้อยมากเกี่ยวกับเรื่องนี้ มีเพียงคนเท่านั้นที่พูดว่าเป็นการปรับปรุง แต่ก็ยังคลุมเครือในเรื่องของความเป็นอยู่ ฉันต้องการได้มากที่สุดโดยมีข้อ จำกัด น้อยที่สุดเท่าที่จะเป็นไปได้ ... ฉันคิดว่าบางคนที่นี่อาจรู้อะไรสักอย่างหรือสองอย่าง เว็บไซต์ MySQL อย่างเป็นทางการไม่ได้ให้ข้อมูลเท่าที่ฉันหวังไว้ จาก …
10 mysql 

3
mysqldump - ธุรกรรมเดี่ยว แต่อัพเดตคิวรี่กำลังรอการสำรองข้อมูล
ถ้าฉันใช้ mysqldump - ธุรกรรมเดี่ยวตามเอกสารที่ควรทำตารางล้างด้วยล็อคการอ่านเพื่อให้ได้สถานะที่สอดคล้องกันจากนั้นเริ่มต้นการทำธุรกรรมและไม่มีนักเขียนที่ควรจะรอ อย่างไรก็ตามเมื่อคืนนี้ฉันได้พบกับสถานการณ์ต่อไปนี้: ส่วนที่ตัดตอนมาจากรายการกระบวนการเต็มรูปแบบแสดง: หลายร้อยคน ... Command: Query Time: 291 State: Waiting for table flush Info: insert into db_external_notification..... ถ้าอย่างนั้น: Command: Query Time: 1204 State: Sending data Info: SELECT /*!40001 SQL_NO_CACHE */ * FROM `db_external_notification` และเธรดที่เหลืออยู่ในโหมดสลีป ไม่มีใครมีความคิดใด ๆ สิ่งที่แทรกเหล่านี้รอ? ฉันไม่เห็นตาราง FLUSH หรือ DDL ใด ๆ หรืออะไรก็ตามที่กล่าวถึงในคู่มือที่อาจทำให้ข้อความค้นหารอ คำสั่ง mysqldump …

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