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

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

1
วิธีที่มีประสิทธิภาพที่สุดในการเพิ่มคอลัมน์อนุกรมลงในตารางขนาดใหญ่
อะไรที่เร็วที่สุดวิธีการเพิ่มคอลัมน์ BIGSERIAL ไปยังตารางขนาดใหญ่ (~ 3 Bil. แถว ~ 174Gb)? แก้ไข: ฉันต้องการให้คอลัมน์เป็นค่าที่เพิ่มขึ้นสำหรับแถวที่มีอยู่ ( NOT NULL) ฉันไม่ได้ตั้งสารเติม (ซึ่งดูเหมือนว่าจะเป็นการตัดสินใจที่ไม่ดีในการหวนกลับ) ฉันไม่มีปัญหาเกี่ยวกับพื้นที่ดิสก์เพียงต้องการให้เร็วที่สุดเท่าที่จะเป็นไปได้

2
วิธีสร้างคอลัมน์ในฐานข้อมูลด้วยสตริงสุ่มค่าเริ่มต้น
ฉันสามารถสร้างคอลัมน์ในตาราง DB (PostgreSQL) ซึ่งมีค่าเริ่มต้นสตริงแบบสุ่มได้อย่างไร หากเป็นไปไม่ได้โปรดแจ้งให้เราทราบ

6
การส่งผ่านอาร์กิวเมนต์ไปยัง psql
ฉันใช้งานสคริปต์ plpgsql ใน Postgres 8.3 - ฉันต้องการส่งอาร์กิวเมนต์ไปยังสคริปต์นี้ผ่าน psql ฉันกำลังใช้งานสคริปต์เช่น: psql -d database -u user -f update_file.sql ฉันเจอลิงค์นี้ซึ่งอธิบายตัวแปรสภาพแวดล้อมของ PGOPTIONS แต่นั่นไม่ได้ผลสำหรับอาร์กิวเมนต์ "กำหนดเอง" เช่นฉันได้รับข้อผิดพลาดเนื่องจากการตั้งค่าไม่ได้อยู่ในไฟล์ postgres.conf -bash-3.2$ export PGOPTIONS='--pretend=true' -bash-3.2$ psql -d my_db -f update_database.sql psql: FATAL: unrecognized configuration parameter "pretend" ความคิดอื่น ๆ ? เป็นการดีที่ฉันต้องการหลีกเลี่ยงตัวแปรสภาพแวดล้อม ...
10 postgresql  psql 

2
ฉันต้องมีคอลัมน์รหัสแยกต่างหากสำหรับตาราง "การแมป" นี้หรือไม่
ฉันมีตารางProducersและตารางProductsซึ่งทั้งสองอย่างนี้มีรูปแบบ: Id - int คีย์หลัก Name - nvarchar ผู้ผลิตสามารถบรรทุกผลิตภัณฑ์ได้หลายตัวดังนั้นฉันจะสร้างตารางที่เรียกProducerDetailsว่าจะมี: ProducerId - int, foreign key to Producers.Id ProductId - int, foreign key to Products.Id จากนั้นฉันก็เริ่มตั้งคำถามกับตัวเองดังนั้นฉันจึงคิดว่าฉันจะถามผู้เชี่ยวชาญ การออกแบบฐานข้อมูลจะดีกว่าหรือไม่หากมีIdคอลัมน์เพิ่มเติม(int, คีย์หลัก) ในProducerDetailsตารางของฉัน หรือว่าไม่จำเป็น? ฉันใช้ SQL-Server 2008 R2 ถ้านั่นสร้างความแตกต่างได้เลย แก้ไข - ความสัมพันธ์ระหว่างตารางเหล่านี้จะเป็นแบบกลุ่มต่อกลุ่มฉันเชื่อว่าขอโทษที่ฉันไม่ได้บอกอย่างชัดเจน ผู้ผลิตสามารถดำเนินการผลิตภัณฑ์หลายประเภทและผลิตภัณฑ์เดียวกันสามารถผลิตได้โดยผู้ผลิตหลายราย ฉันขอโทษถ้าคำถามนี้ง่ายเกินไปการออกแบบความสมบูรณ์ของการอ้างอิง / ฐานข้อมูลไม่ใช่จุดแข็งของฉัน (แม้ว่าฉันจะพยายามปรับปรุงมัน)

6
ตารางที่มีลำดับชั้น: สร้างข้อ จำกัด เพื่อป้องกันการเวียนผ่านปุ่มต่างประเทศ
สมมติว่าเรามีตารางที่มีข้อ จำกัด foreign key กับตัวเองเช่น: CREATE TABLE Foo (FooId BIGINT PRIMARY KEY, ParentFooId BIGINT, FOREIGN KEY([ParentFooId]) REFERENCES Foo ([FooId]) ) INSERT INTO Foo (FooId, ParentFooId) VALUES (1, NULL), (2, 1), (3, 2) UPDATE Foo SET ParentFooId = 3 WHERE FooId = 1 ตารางนี้จะมีบันทึกต่อไปนี้: FooId ParentFooId ----- ----------- 1 3 2 …

1
Postgresql: ย้ายฐานข้อมูลไปยัง tablespace ใหม่
ฉันต้องการย้ายฐานข้อมูล (ตารางดัชนี ฯลฯ ) ไปยังพื้นที่ตารางใหม่อย่างสมบูรณ์ ฉันรู้วิธีย้ายแต่ละรายการแยกกัน แต่มีวิธีย้ายทุกอย่างในครั้งเดียวหรือไม่ ฉันใช้ postgresql 9.1
10 postgresql 

2
คำสั่ง mysqldump จะสำรองมุมมองทั้งหมดที่มีอยู่ใน DB หรือมีคำสั่งพิเศษหรือไม่?
ฉันพยายามสำรองฐานข้อมูลทั้งหมดพร้อมกับมุมมอง ฉันจะใช้mysqldumpคำสั่ง ฉันสงสัยว่าจะคัดลอกมุมมองทั้งหมดหรือไม่ฉันจะต้องใช้คำสั่งแยกต่างหาก กรุณาแนะนำคำตอบ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก
10 mysql  backup  mysqldump  view 

6
ไม่สามารถเชื่อมต่อกับฐานข้อมูล MySQL ผ่าน SSH ด้วย Workbench
ฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูลของฉันผ่านทาง SSH tunneling จากหนึ่งในเว็บแอพเซิร์ฟเวอร์ของเราด้วย MySQL Workbench นี่คือการตั้งค่าพื้นฐาน โปรดทราบว่าฉันเปลี่ยนค่าบางอย่างในภาพหน้าจอเพื่อเหตุผลด้านความปลอดภัย ปัญหาคือทุกครั้งที่ฉันพยายามเชื่อมต่อผ่านอุโมงค์ SSH จากหนึ่งในเซิร์ฟเวอร์แอปของเราฉันได้รับข้อผิดพลาดดังต่อไปนี้: ไม่สามารถเชื่อมต่อกับ us-east-1.amazonaws.com ผ่านอุโมงค์ SSH ที่ computer.amazonaws.com กับผู้ใช้ social_shop_prod ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ใน 127.0.0.1 อย่างไรก็ตามหากฉันใช้ข้อมูลรับรองเดียวกันกับ SSH ผ่านบรรทัดคำสั่งต่อไปนี้: mysql -u social_shop_prod -h us-east-1.amazonaws.com -p ฉันสามารถเชื่อมต่อได้สำเร็จและรับพรอมต์คำสั่งแบบโต้ตอบ MySQL เคยพูดคุยกับทีมพัฒนาที่เหลือของฉันที่นี่และไม่มีใครรู้ว่าทำไมฉันไม่สามารถเจาะผ่าน SSH จากเซิร์ฟเวอร์แอปของเราด้วย Workbench; แต่เมื่อฉัน SSH กับหนึ่งในเซิร์ฟเวอร์แอปของเราและเชื่อมต่อกับ MySQL ผ่านทางบรรทัดคำสั่ง; ฉันสามารถเชื่อมต่อได้สำเร็จ และทำไมจึงพยายามเชื่อมต่อมากกว่า 127.0.0.1 ฉันไม่ได้ระบุในการกำหนดค่า ไม่มีไฟล์โฮสต์ของฉันที่เปลี่ยนเส้นทางโดเมนที่แสดงด้านล่างไปยัง IP นั้น …

3
วิธีการดึงข้อมูลข้อ จำกัด คีย์ต่างประเทศ
ฉันกำลังมองหาข้อความค้นหาที่อนุญาตให้ดึงข้อมูลคีย์ต่างประเทศ (แต่ละบรรทัด: ตารางอ้างอิงและฟิลด์, ตารางอ้างอิงและฟิลด์อ้างอิง) ของสคีมาทั้งหมด ฉันได้พบสิ่งนี้แล้ว แต่ไม่ได้ให้ข้อมูลทั้งหมดที่ฉันต้องการ: /programming/4389228/sql-for-oracle-to-check-if-a-constraint-export ขณะนี้ฉันกำลังดำเนินการอยู่และอาจสิ้นสุดด้วยวิธีแก้ไขปัญหาในนาที / ชั่วโมงถัดไป แต่ถ้าใครมีวิธีแก้ปัญหาการทำงานที่สมบูรณ์แล้วฉันจะดีใจที่ได้รู้ :)

1
ฉันจะให้สิทธิ์ทั้งหมดกับ db2admin โลคัลกับ DB2 9.7 บน Windows ได้อย่างไร?
ฉันมีแล็ปท็อปเป็นสถานีสำหรับนักพัฒนาซอฟต์แวร์ที่มีระบบปฏิบัติการ Windows XP Professional Edition, Service Pack 3 ฉันดาวน์โหลดและติดตั้งฟิกซ์แพ็ก IBM DB2 UDB 9.7 ของ Express-C แล้ว ฉันมีบัญชี Windows ในพื้นที่ชื่อ db2admin ที่ฉันใช้ในฐานะผู้ดูแลระบบฐานข้อมูลในเครื่องสำหรับการติดตั้ง DB2 ในพื้นที่ของฉัน (เพื่อจุดประสงค์ในการพัฒนาเท่านั้น) ฉันสามารถเรียกใช้สิ่งต่อไปนี้ได้โดยไม่มีปัญหาเมื่อเรียกใช้หน้าต่างคำสั่ง: db2 attach to db2 user db2admin using xxxxxxxxxx ที่ช่วยให้ฉันแนบกับอินสแตนซ์ของฉันที่เรียกว่า DB2 ฉันสามารถรันคำสั่งสร้างฐานข้อมูลของฉันได้ ฉันพยายามเชื่อมต่อกับฐานข้อมูลเพื่อให้สิทธิ์ทั้งหมดสำหรับบัญชี db2admin ของฉันใน DB2 db2 CONNECT TO MYDB; SET SCHEMA DB2ADMIN; db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM …

3
วิธีการลบข้อมูลสำรองจากชุดข้อมูลสำรองใน SQL Server 2008 R2
ชื่อค่อนข้างจะรวมมันขึ้นมา เราใช้พื้นที่ในดิสก์สำรองของเราหมดและจำเป็นต้องลบข้อมูลสำรองเก่าออกจากชุด ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับเรื่องนี้

1
ทริกเกอร์และขั้นตอนการถ่ายโอนข้อมูล mysqldump สามารถ
มีวิธีการสร้าง mysqldump ซึ่งจะบันทึกทริกเกอร์และขั้นตอนทั้งหมดจากฐานข้อมูลที่ระบุหรือไม่? บางครั้งก่อนหน้านี้ฉันอ่านแล้วว่าmysqldumpจะช่วยทริกเกอร์ของฉันด้วย แต่มันก็ดูไม่เหมือนกัน คำถามที่สองของฉันคือฉันจะตรวจสอบในไฟล์ sql ได้อย่างไรถ้ามีทริกเกอร์อยู่

2
เกี่ยวกับ“ การประมวลผลรหัสธุรกรรม”
ตอนนี้ฉันอ่านเอกสารเกี่ยวกับ "Transaction ID Wraparound" แต่มีบางอย่างที่ฉันไม่เข้าใจจริงๆเอกสารเป็น url ต่อไปนี้ http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # สูญญากาศ-FOR-วิจิตร 23.1.4 การป้องกันการล้มเหลวของการห่อธุรกรรม ID ความหมายของธุรกรรม MVCC ของ PostgreSQL นั้นขึ้นอยู่กับความสามารถในการเปรียบเทียบหมายเลขรหัสธุรกรรม (XID): เวอร์ชันแถวที่มีการแทรก XID มากกว่า XID ของธุรกรรมปัจจุบันคือ "ในอนาคต" และไม่ควรมองเห็นธุรกรรมปัจจุบัน แต่เนื่องจาก ID ธุรกรรมมีขนาดที่ จำกัด (32 บิต) คลัสเตอร์ที่รันเป็นเวลานาน (มากกว่า 4 พันล้านธุรกรรม) จะได้รับการใช้งาน ID ของรายการ: ตัวนับ XID ล้อมรอบเป็นศูนย์และธุรกรรมทั้งหมดที่อยู่ใน อดีตดูเหมือนจะเป็นในอนาคต - ซึ่งหมายความว่าผลผลิตของพวกเขาจะมองไม่เห็น ในระยะสั้นการสูญเสียข้อมูลหายนะ (ที่จริงแล้วข้อมูลยังคงอยู่ที่นั่น แต่มันก็สบายดีถ้าคุณไม่สามารถทำได้) เพื่อหลีกเลี่ยงสิ่งนี้จำเป็นต้องดูดทุกตารางในฐานข้อมูลทุก …
10 postgresql 

2
มุมมองจำเป็นต้องมีข้อ จำกัด กุญแจต่างประเทศของตัวเองหรือไม่?
คำเตือน: ฉันเป็นโปรแกรมเมอร์ไม่ใช่ DBA ดังนั้นทนกับฉัน ... ฉันมีมุมมองที่ฉันใช้เพื่อจับคู่เอนทิตี 2 รายการเข้าด้วยกัน ฉันต้องเข้าร่วมระหว่างตารางที่แตกต่างกันสองสามเพื่อให้ได้: CREATE OR REPLACE VIEW V_SCREENING_GROUP_SITES AS ( SELECT SG.SCREENING_GROUP_ID, V.SITE_ID FROM SCREENING_GROUP SG, VISIT V, VISIT_DATE VD WHERE VD.VISIT_ID = V.VISIT_ID AND V.SCREENING_GROUP_ID = SG.SCREENING_GROUP_ID); ด้านบนเป็นเพียงบริบทไม่ต้องกังวลมากเกินไป สิ่งที่ฉันต้องรู้คือวิธีสร้างฟิลด์ในมุมมอง V_SCREENING_GROUP_SITES ใหม่ของฉัน (SCREENING_GROUP_ID และ SITE_ID) ทำหน้าที่เป็นคีย์ต่างประเทศในตาราง SCREENING_GROUP และ SITE หรือว่ามันสำคัญ ถ้าเป็นตารางฉันจะทำ: ALTER TABLE V_SCREENING_GROUP_SITES …

1
กู้คืนฐานข้อมูลที่เข้ารหัสไปยังเซิร์ฟเวอร์อื่น
ฉันใช้ผลิตภัณฑ์ที่ทำงานบน SQLServer 2008 เข้าใจได้ว่า บริษัท ที่จัดหานั้นไม่ได้ให้การสนับสนุน SQLServer เมื่อฉันติดตั้งผลิตภัณฑ์ฉันระบุรหัสผ่านเพื่อเข้ารหัสฐานข้อมูล ฉันต้องการเรียกใช้สำเนาผลิตภัณฑ์อื่นเพื่อทดสอบบนเซิร์ฟเวอร์อื่น ฉันกู้คืนฐานข้อมูลไปยังเซิร์ฟเวอร์อื่นและติดตั้งผลิตภัณฑ์บนเซิร์ฟเวอร์อื่นนั้น เมื่อฉันติดตั้งฉันได้ให้รหัสผ่านเดียวกันแล้วคืนค่าการสำรองข้อมูลจากเซิร์ฟเวอร์หลัก อย่างไรก็ตามฉันได้รับข้อความแสดงข้อผิดพลาด: System.Data.SqlClient.SqlException: An error occurred during decryption. จากผลิตภัณฑ์ ฉันสามารถเข้าถึงตารางโดยใช้สตูดิโอจัดการ SQLServer ฉันได้ลองสิ่งนี้แล้ว: บนเซิร์ฟเวอร์แรก: CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff' BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat' WITH PRIVATE KEY ( ENCRYPTION BY PASSWORD = 'mypassword', FILE …

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