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

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

7
EXISTS (SELECT 1 …) เทียบกับ EXISTS (SELECT * …) อย่างใดอย่างหนึ่งหรือไม่
เมื่อใดก็ตามที่ฉันต้องการตรวจสอบการมีอยู่ของแถวในตารางฉันมักจะเขียนเงื่อนไขเช่น: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) คนอื่นเขียนเหมือน: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

2
SQL Server เลือกผลลัพธ์ที่คาดเดาไม่ได้ (ข้อผิดพลาด dbms?)
ด้านล่างเป็นตัวอย่างง่ายๆที่ให้ผลลัพธ์ที่แปลกประหลาดซึ่งไม่สามารถคาดเดาได้และเราไม่สามารถอธิบายได้ในทีมของเรา เรากำลังทำอะไรผิดพลาดหรือเป็นข้อผิดพลาดของ SQL Server หรือไม่ หลังจากการตรวจสอบบางอย่างเราได้ลดพื้นที่การค้นหาเป็นสหภาพประโยคในแบบสอบถามย่อยซึ่งเลือกหนึ่งระเบียนจากตาราง "ผู้ชาย" มันทำงานได้ตามที่คาดหวังใน SQL Server 2000 (ส่งคืน 12 แถว) แต่ในปี 2008 และ 2012 จะส่งคืนเพียงแถวเดียว create table dual (dummy int) insert into dual values (0) create table men ( man_id int, wife_id int ) -- there are 12 men, 6 married insert into men values (1, …

2
การปรับปรุงประสิทธิภาพการอัปเดตเป็นกลุ่มใน PostgreSQL
ใช้ PG 9.1 บน Ubuntu 12.04 ขณะนี้เราใช้เวลาถึง 24 ชั่วโมงในการเรียกใช้ชุดคำสั่ง UPDATE จำนวนมากบนฐานข้อมูลซึ่งเป็นรูปแบบ: UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (เราแค่เขียนทับฟิลด์ของวัตถุที่ระบุด้วย ID) ค่ามาจากแหล่งข้อมูลภายนอก (ยังไม่ได้อยู่ในฐานข้อมูลในตาราง) ตารางมีดัชนีไม่กี่ข้อและไม่มีข้อ จำกัด ของรหัสต่างประเทศ ไม่มีการกระทำใด ๆ จนกว่าจะสิ้นสุด ใช้เวลา 2 ชั่วโมงในการนำเข้าpg_dumpฐานข้อมูลทั้งหมด ดูเหมือนว่าพื้นฐานนี้เราควรตั้งเป้าหมายอย่างสมเหตุสมผล ขาดการผลิตโปรแกรมที่กำหนดเองซึ่งสร้างชุดข้อมูลสำหรับ PostgreSQL เพื่อนำเข้าอีกครั้งมีอะไรที่เราสามารถทำได้เพื่อให้ประสิทธิภาพการอัพเดทจำนวนมากใกล้เคียงกับการนำเข้าหรือไม่ (นี่คือพื้นที่ที่เราเชื่อว่าต้นไม้ที่ผสานโครงสร้างบันทึกการจัดการดี แต่เราสงสัยว่ามีอะไรที่เราสามารถทำได้ภายใน PostgreSQL) ความคิดบางอย่าง: วางดัชนีที่ไม่ใช่ ID ทั้งหมดและสร้างใหม่ในภายหลังหรือไม่ การเพิ่ม …

8
งาน SQL Server Agent และกลุ่มความพร้อมใช้งาน
ฉันกำลังมองหาแนวปฏิบัติที่ดีที่สุดในการจัดการงาน SQL Server Agent ตามกำหนดเวลาในกลุ่มความพร้อมใช้งานของ SQL Server 2012 บางทีฉันอาจพลาดบางสิ่ง แต่ในสถานะปัจจุบันฉันรู้สึกว่า SQL Server Agent ไม่ได้รวมเข้ากับฟีเจอร์ SQL2012 ที่ยอดเยี่ยมนี้ ฉันจะทำให้งานเอเจนต์ SQL ตามกำหนดเวลารับรู้ถึงการสลับโหนดได้อย่างไร? ตัวอย่างเช่นฉันมีงานที่ทำงานบนโหนดหลักซึ่งโหลดข้อมูลในแต่ละชั่วโมง ทีนี้ถ้าหลักล้มลงฉันจะเปิดใช้งานงานรองซึ่งตอนนี้กลายเป็นงานหลักได้อย่างไร? ถ้าฉันจัดกำหนดการงานบนรองเสมอมันจะล้มเหลวเพราะงานรองเป็นแบบอ่านอย่างเดียว

8
การเขียนผลลัพธ์ที่เลือกไปยังไฟล์ csv
เราจำเป็นต้องเขียนผลลัพธ์การสืบค้น SELECT ลงในไฟล์ csv จะใช้ T-SQL ใน SQL Server 2008 r2 ได้อย่างไร ฉันรู้ว่ามันสามารถทำได้ใน SSIS แต่ด้วยเหตุผลบางอย่างเราไม่มีตัวเลือกนี้ ฉันพยายามใช้ proc ที่แนะนำในบทความด้านล่าง แต่เมื่อฉันเรียกใช้ proc, SQL บ่นว่าไม่สามารถเรียกใช้ sys.sp_OACreate และ sys.sp_OADestroy ที่เรียกว่าใน proc นี้ คุณรู้วิธีที่เราสามารถเปิดส่วนประกอบเหล่านี้หรือรู้วิธีการเขียนไฟล์โดยใช้ T-SQL ขอบคุณล่วงหน้า.

4
การรัน pg_dump บน live db สร้างการสำรองข้อมูลที่สอดคล้องหรือไม่?
ฉันมีฐานข้อมูล 3GB ที่ได้รับการแก้ไขอย่างต่อเนื่องและฉันจำเป็นต้องทำการสำรองข้อมูลโดยไม่ต้องหยุดเซิร์ฟเวอร์ (Postgres 8.3) pg_dump ของฉันทำงาน 5 นาที เกิดอะไรขึ้นถ้าข้อมูลถูกแก้ไขระหว่างกระบวนการ? ฉันจะได้รับการสำรองข้อมูลที่สอดคล้องกันหรือไม่ ฉันไม่ต้องการทราบเมื่อเกิดภัยพิบัติ Postpost เอกสารhttp://www.postgresql.org/docs/8.3/static/app-pgdump.htmlไม่ได้พูดอะไรเกี่ยวกับเรื่องนี้
37 postgresql 

3
ข้อผิดพลาดในการเชื่อมต่อ MySQL 5.1.66 SSL ข้อผิดพลาด 2026 (HY000)
UPDATE2 ใช้ WireShark ฉันพบสตริงปัญหา (ฉันหวังว่าฉันได้): 28 | 9.582638 | 192.168.18.128 | 192.168.18.129 | MySQL Response Error 1043 และข้อผิดพลาดคือ (ตามเอกสาร ): Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR) Message: Bad handshake นี่คือภาพหน้าจอของ WireShark ในสองกรณี: การเชื่อมต่อจาก Windows 8 (สำเร็จ): การเชื่อมต่อจาก CentOS (ล้มเหลว): ทำไมสิ่งนี้ถึงเกิดขึ้น UPDATE สิ่งหนึ่งที่น่าสนใจ: ฉันได้เชื่อมต่อกับ Master DB โดยใช้ Windows 8 ได้สำเร็จ(192.168.18.1)โดยการแก้ไขการตั้งค่า sslus บน …
37 mysql  replication  ssl 

5
วิธีแทรกข้อมูล (ไฟล์) ลงในคอลัมน์ PostgreSQL bytea ได้อย่างไร
คำถามนี้ไม่เกี่ยวกับ bytea v. oid v. blobs v. วัตถุขนาดใหญ่ ฯลฯ ฉันมีตารางที่ประกอบด้วยintegerเขตข้อมูลคีย์หลักและbyteaเขตข้อมูล ฉันต้องการป้อนข้อมูลลงในbyteaช่อง สิ่งนี้สามารถสันนิษฐานได้ว่าทำได้ด้วยPL/ภาษาใดภาษาหนึ่งและฉันอาจจะลองทำสิ่งนี้PL/Pythonในอนาคต ขณะที่ฉันยังคงทดสอบและทดลองใช้ฉันต้องการแทรกข้อมูลจากไฟล์ (บนเซิร์ฟเวอร์) โดยใช้คำสั่ง SQL "มาตรฐาน" ฉันทราบว่าผู้ดูแลระบบที่มีสิทธิ์เขียนบนเซิร์ฟเวอร์เท่านั้นที่จะสามารถแทรกข้อมูลในแบบที่ฉันต้องการ ฉันไม่ได้กังวลเกี่ยวกับเรื่องนี้ในขณะนี้เนื่องจากผู้ใช้จะไม่สามารถแทรกbyteaข้อมูลในปัจจุบัน ฉันได้ค้นหาไซต์ StackExchange ต่างๆ, คลังข้อมูล PostgreSQL และอินเทอร์เน็ตโดยทั่วไปแล้ว แต่ไม่สามารถหาคำตอบได้ แก้ไข: นี้การอภิปรายจาก 2008 แสดงให้เห็นว่าสิ่งที่ฉันต้องการจะทำคือไปไม่ได้ มีการbyteaใช้ฟิลด์อย่างไร แก้ไข: คำถามที่คล้ายกันนี้จากปี 2005 ยังไม่มีคำตอบ แก้ไขได้:รายละเอียดที่ให้ไว้ที่นี่ในpsycopgเว็บไซต์เป็นพื้นฐานสำหรับการแก้ปัญหาที่ฉันเขียนใน Python มันก็อาจจะเป็นไปได้ที่จะใส่ข้อมูลไบนารีเป็นคอลัมน์ที่ใช้bytea PL/Pythonฉันไม่ทราบว่าสิ่งนี้เป็นไปได้โดยใช้ "บริสุทธิ์" SQL

5
วิธีการเร่งความเร็วการลบอย่างมากจาก <table> โดยไม่มีส่วนคำสั่ง
ใช้ SQL Server 2005 ฉันกำลังทำการลบขนาดใหญ่จากที่ไม่มีส่วนคำสั่ง โดยทั่วไปแล้วเทียบเท่ากับคำสั่ง TRUNCATE TABLE - ยกเว้นฉันไม่ได้รับอนุญาตให้ใช้ TRUNCATE ปัญหาคือตารางมีขนาดใหญ่มาก - 10 ล้านแถวและใช้เวลากว่าหนึ่งชั่วโมงกว่าจะเสร็จสมบูรณ์ มีวิธีทำให้เร็วขึ้นโดยไม่: ใช้ตัดทอน ปิดการใช้งานหรือวางดัชนี? t-log มีอยู่ในดิสก์ที่แยกต่างหาก ข้อเสนอแนะใด ๆ ยินดีต้อนรับ!

6
การสำรองข้อมูลที่น้อยที่สุดทำได้ ... ด้วย SQL Server
ทุกวันเราจัดส่งข้อมูลสำรอง SQL Server ของเราทั่วทั้ง WAN เราจำเป็นต้องลดขนาดของการสำรองข้อมูลเหล่านี้เพื่อไม่ให้ใช้งานได้ตลอดไป เราไม่รังเกียจหากกระบวนการสำรองข้อมูลของเราใช้เวลานานขึ้น เนื่องจากเราจำเป็นต้องย้ายการสำรองข้อมูลที่บีบอัด 30 กรัมข้าม WAN ที่ใช้เวลานานกว่า 10 ชั่วโมง มี 2 ​​ตัวเลือกที่เราจะต้องได้รับการสำรองข้อมูลรายวันขนาดเล็ก บันทึกการจัดส่งซึ่งหมายความว่าเราจะต้องปรับโครงสร้างกระบวนการ DR ดึงข้อมูลออกจาก db และสร้างใหม่อีกด้านหนึ่ง (ดร็อปดัชนีที่ไม่ใช่คลัสเตอร์แพ็คดัชนีคลัสเตอร์ที่ 100% - สร้างใหม่อีกด้านหนึ่ง) ทั้งสองจะเกี่ยวข้องกับปริมาณงานที่เป็นธรรมจากส่วนของเรา เราใช้ SQL Server 2008 pro การสำรองข้อมูลทั้งหมดจะถูกบีบอัด มีผลิตภัณฑ์เชิงพาณิชย์ใดบ้างที่สามารถให้ตัวเลือกสำรองขนาดใกล้เคียงกันกับตัวเลือก (2) มีสคริปต์ที่ครอบคลุมที่จะช่วยให้เราสามารถบรรลุ (2)? (การจัดการมุมมองที่จัดทำดัชนีดัชนีกรองคีย์ต่างประเทศและอื่น ๆ )

4
ฉันจะแสดงรายการหรือค้นหาชื่อคอลัมน์ทั้งหมดในฐานข้อมูลของฉันได้อย่างไร
ฉันต้องการค้นหาสตริงในชื่อคอลัมน์ที่มีอยู่ในฐานข้อมูล ฉันกำลังทำงานในโครงการบำรุงรักษาและฐานข้อมูลบางส่วนที่ฉันจัดการมีมากกว่า 150 ตารางดังนั้นฉันกำลังมองหาวิธีที่รวดเร็วในการทำเช่นนี้ คุณแนะนำเมนูใด?

10
ฉันจะติดตามการพึ่งพาฐานข้อมูลได้อย่างไร
เมื่อแอปพลิเคชันภายในมีวิวัฒนาการมานานหลายปีคุณอาจพบว่ามีตารางจำนวนมากที่ผู้คนเชื่อว่าไม่มีความเกี่ยวข้องกันอีกต่อไปและต้องการเลือกสรร อะไรคือวิธีปฏิบัติในการระบุการพึ่งพาฐานข้อมูลทั้งภายในสภาพแวดล้อม SQL และอาจเป็นต้นไปสู่สิ่งต่าง ๆ เช่น SSIS ฉันเคยทำงานในที่ที่มีการใช้ตัวเลือกที่โหดร้ายเช่น: ปล่อยก่อนถามคำถามในภายหลัง (สามารถฆ่าการสร้างคลังข้อมูลถ้าพยายามแยกตารางที่ไม่มีอยู่อีกต่อไป) ลบการอนุญาตก่อนและรอการรายงานข้อผิดพลาด (อาจทำให้เกิดข้อบกพร่องเงียบหากความล้มเหลวไม่ได้จัดการอย่างถูกต้อง) ฉันขอขอบคุณที่ SQL Server มาพร้อมกับเครื่องมือสำหรับการติดตามการอ้างอิงภายในอินสแตนซ์นั้น แต่สิ่งเหล่านี้ดูเหมือนจะลำบากถ้าคุณมีฐานข้อมูลในอินสแตนซ์ที่ต่างกัน มีตัวเลือกที่ช่วยให้ค้นหาข้อความอ้างอิงได้ง่ายขึ้นหรืออาจตอบคำถามเช่น "คอลัมน์นี้ใช้ที่ไหน" กับคำตอบเช่น "บนเซิร์ฟเวอร์อื่น ๆ ในขั้นตอนการจัดเก็บนี้" หรือ "มากกว่าในแพ็คเกจ SSIS นี้"?

2
PostgreSQL EXCLUDE ข้อผิดพลาดในการใช้: จำนวนเต็มชนิดข้อมูลไม่มีคลาสตัวดำเนินการเริ่มต้น
ใน PostgreSQL 9.2.3 ฉันพยายามสร้างตารางที่ง่ายขึ้นนี้: CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &amp;&amp;) ); แต่ฉันได้รับข้อผิดพลาดนี้: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default …

6
รหัสข้อผิดพลาด 1117 มีจำนวนคอลัมน์มากเกินไป MySQL จำกัด คอลัมน์บนโต๊ะ
ฉันมีตารางที่มี 1,699 คอลัมน์และเมื่อฉันพยายามแทรกคอลัมน์อื่น ๆ ที่ฉันได้รับ รหัสข้อผิดพลาด: 1117 มีคอลัมน์มากเกินไป ในตารางนี้ฉันมีเพียง 1,000 แถว สำหรับฉันสิ่งที่สำคัญที่สุดคือจำนวนคอลัมน์ มีข้อ จำกัด ใด ๆ บนโต๊ะหรือไม่? ฉันต้องการสร้างคอลัมน์ 2,000 คอลัมน์ เป็นไปได้ไหม
37 mysql  table 

7
เป็นไปได้หรือไม่ที่จะ mysqldump ชุดย่อยของฐานข้อมูลที่จำเป็นในการสร้างแบบสอบถาม?
พื้นหลัง ฉันต้องการให้ส่วนย่อยของฐานข้อมูลของฉันที่จำเป็นในการสร้างselectแบบสอบถาม เป้าหมายของฉันคือการทำให้เวิร์กโฟลว์การคำนวณของฉันทำซ้ำได้ (เช่นในการวิจัยที่ทำซ้ำได้ ) คำถาม มีวิธีที่ฉันสามารถรวมคำสั่ง select นี้ลงในสคริปต์ที่ทิ้งข้อมูลการสืบค้นลงในฐานข้อมูลใหม่หรือไม่เช่นนั้นฐานข้อมูลสามารถติดตั้งบนเซิร์ฟเวอร์ mysql ใหม่ได้และคำสั่งจะทำงานกับฐานข้อมูลใหม่ ฐานข้อมูลใหม่ไม่ควรมีเร็กคอร์ดนอกเหนือจากที่ใช้ในเคียวรี อัปเดต: เพื่อความกระจ่างฉันไม่สนใจ csv dump ของผลลัพธ์การสืบค้น สิ่งที่ฉันต้องทำคือการถ่ายโอนข้อมูลชุดย่อยฐานข้อมูลเพื่อให้สามารถติดตั้งบนเครื่องอื่นและจากนั้นแบบสอบถามสามารถทำซ้ำได้ (และแก้ไขได้ด้วยชุดข้อมูลเดียวกัน) ตัวอย่าง ตัวอย่างเช่นการวิเคราะห์ของฉันอาจเคียวรีชุดย่อยของข้อมูลที่ต้องการบันทึกจากหลาย ๆ ตาราง (ในตัวอย่างนี้ 3) ตาราง: select table1.id, table1.level, table2.name, table2.level from table1 join table2 on table1.id = table2.table1_id join table3 on table3.id = table2.table3_id where table3.name in ('fee', 'fi', …

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