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

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

1
ในกรณีที่มีการอัปเดตหลายระเบียนในรายการเดียวมีการจัดเก็บรุ่นกี่เวอร์ชัน
อ้างอิงจากบทความ MSDN โดย Kimberly L. Tripp การแยกธุรกรรมโดยใช้การควบคุมเวอร์ชันของSQL Server 2005 Rowของ Neal Graves "... ทุกรุ่นก่อนหน้าของเร็กคอร์ดที่เฉพาะเจาะจงจะถูกล่ามโซ่ไว้ในรายการที่เชื่อมโยงและในกรณีของการทำธุรกรรมที่อิงกับการทำเวอร์ชันแถวยาวรันลิงก์จะต้องถูกสำรวจในแต่ละการเข้าถึงเพื่อให้ได้เวอร์ชันที่สอดคล้องกันของธุรกรรม แถว" ซึ่งอยู่ในส่วน "การทำความเข้าใจกับการกำหนดเวอร์ชันของแถว" สำหรับการติดตามทั้ง "การกำหนดเวอร์ชันของแถวในการอ่านที่กระทำโดยใช้การกำหนดเวอร์ชันของแถว" และ "การกำหนดเวอร์ชันของแถวในการแยก Snapshot" เพิ่มเติมเกี่ยวกับตัวอย่างของการกำหนดเวอร์ชันของแถวเนื่องจากการปรับเปลี่ยนมีให้ในบริบทของการอัพเดตหลายรายการของเร็กคอร์ดเดียวกันโดยการทำธุรกรรมหลายรายการ (T1, T2, T3) ใน SNAPSHOT เท่านั้น ในกรณีที่มีเพียงหนึ่งธุรกรรมที่อัปเดตบันทึกหลายครั้ง (โดยหลายงบ) จะมีการจัดเก็บหลายรุ่น (เชื่อมโยง) หรือเฉพาะรายการที่ถ่ายในช่วงเวลาที่มีการ "จับภาพ" SNAPSHOT หรือไม่ คำตอบสำหรับคำถามนี้ควรตอบคำถามที่เกี่ยวข้องที่รอดำเนินการของฉันทันที: เหตุใดตัวแยกการกำหนดเวอร์ชันแถวใช้รายการรุ่นที่เชื่อมโยงของบันทึก RCSI ใช้พื้นที่น้อยกว่าหรือเหมือนกันมากกว่า SNAPSHOT หรือไม่ ทำไม?

1
ความถูกต้องชั่วคราวและความสัมพันธ์หลัก / ต่างประเทศที่สำคัญ
ฉันได้อ่านบทเรียนเกี่ยวกับ oracle หลายตัวที่แสดงถึงความถูกต้องทางเวลาและคุณสมบัติ อย่างไรก็ตามในตัวอย่างที่ฉันอ่านไม่มีคีย์หลักที่ใช้ในตารางตัวอย่าง http://docs.oracle.com/cd/E16655_01/appdev.121/e17620/adfns_design.htm#ADFNS1005 http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/ilm /temporal/temporal.html ควรเพิ่มคีย์หลักในตารางเหล่านี้หรือไม่ ฉันกำลังถามเพราะฉันสงสัยว่าตารางอ้างอิงหนึ่งในตารางชั่วคราวเหล่านี้ควรจะอ้างอิงได้อย่างไร ฉันสามารถเพิ่มคีย์ต่างประเทศจากตารางชั่วคราวหนึ่งไปยังอีกตารางหนึ่งได้หรือไม่ ถ้าฉันเพิ่ม pk / foreign key realtionship จากนั้นอัปเดตการอ้างอิงในตารางด้วย pk ตารางที่มีจุด fk ไปยังระเบียนที่ไม่เกี่ยวข้องอีกต่อไป .... ข้อมูลทางโลกแตกคีย์หลักปกติปกติ - foreign key ความสัมพันธ์? และถ้าเป็นเช่นนั้นสิ่งนี้มีผลต่อประสิทธิภาพอย่างไรฉันจะใช้คอลัมน์ปกติเป็น 'foreign key' และเลือกคอลัมน์ที่ถูกต้องสำหรับช่วงเวลาอ้างอิงในแบบสอบถาม ไม่มีใครรู้หรือมีตัวอย่างหรือแบบฝึกหัดที่มีประโยชน์ซึ่งแสดงข้อมูลชั่วคราวด้วยการใช้ pk / fk แบบหลอกหรือปกติ? ขอบคุณ

3
ดัชนีหนึ่งหรือสอง
ฉันสร้างดัชนีต่อไปนี้บนตารางในฐานข้อมูลของฉัน: CREATE INDEX [idx_index1] on [table1] (col1, col2, col3) เซิร์ฟเวอร์กำลังแนะนำดัชนี 'ขาดหายไป' ต่อไปนี้: CREATE INDEX [idx_index2] on [table1] (col1, col2) INCLUDE (col3, col4, col5, col6....) ดูเหมือนว่าฉันมีเหตุผลที่จะแก้ไขคำจำกัดความดัชนีที่มีอยู่เพื่อรวมคอลัมน์ที่แนะนำแทนที่จะสร้างดัชนีใหม่ที่ต้องได้รับการบำรุงรักษา แบบสอบถามที่เลือกบน col1 และ col2 สามารถใช้ index1 ได้อย่างมีประสิทธิภาพเท่ากับ index2 ฉันถูกต้องหรือว่าฉันขาดอะไรไป

5
การเพิ่มตารางเซิร์ฟเวอร์ SQL ที่ไม่ได้ใช้พื้นที่
ฉันมีตารางใน SQL Server 2012 Express พร้อมพื้นที่ที่ไม่ได้ใช้จำนวนมาก ฉันต้องการพื้นที่ว่างในฐานข้อมูล | NAME | ROWS | สงวนลิขสิทธิ์ DATA | INDEX_SIZE | ไม่ใช้ | ------------- | -------- | -------------- | ----------- --- | ------------ | -------------- | | MyTableName | 158890 | 8928296 KB | 5760944 KB | 2248 KB | 3165104 KB | ฉันจะให้ …

3
ข้อผิดพลาด:“ ในการเรียกใช้แพคเกจ ssis นอกเครื่องมือข้อมูลเซิร์ฟเวอร์ sql คุณต้องติดตั้ง [ส่งอีเมลที่ประสบความสำเร็จ] ของ Integration Services หรือสูงกว่า”
โปรดทราบว่าชื่อของ qusetion นี้เป็นข้อความแสดงข้อผิดพลาดคำต่อคำเฉพาะสำหรับผู้ใช้รายนี้ ข้อความแสดงข้อผิดพลาดแสดงข้อผิดพลาดในแอปพลิเคชัน dtexec ซึ่งจะแทนที่ตัวแปรผู้ใช้ลงในสตริงข้อความข้อผิดพลาด ในกรณีนี้ข้อความมาตรฐานจะถูกแทนที่ด้วยStandard E ditionsend successful email ข้อความแสดงข้อผิดพลาด 'มาตรฐาน' จะเป็น: คำอธิบาย: เมื่อต้องการเรียกใช้แพคเกจ SSIS ภายนอก Business Intelligence Development Studio คุณต้องติดตั้ง Standard Edition ของ Integration Services หรือสูงกว่า รุ่น SSIS 2012 แพคเกจเดิมเป็นเวอร์ชั่น 2005 แพ็คเกจบนระบบไฟล์ DB Engine / Agent บนโฮสต์ 1, SSIS บนโฮสต์ 2 การดำเนินการจากโฮสต์ 2 รันสำเร็จ การดำเนินการจากโฮสต์ 1 ให้ข้อผิดพลาดในหัวข้อคำถาม …

3
การปรับปรุงประสิทธิภาพของ STIntersects
ตารางT_PINมี 300,000 พินและT_POLYGONมี 36,000 รูปหลายเหลี่ยม T_PINมีดัชนีนี้: CREATE SPATIAL INDEX [T_PIN_COORD] ON [dbo].[T_PIN] ( [Coord] )USING GEOGRAPHY_GRID WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH), CELLS_PER_OBJECT = 128, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = …

2
MySQL ไม่ได้ใช้ดัชนีเมื่อเข้าร่วมกับตารางอื่น
ฉันมีสองตารางตารางแรกประกอบด้วยบทความ / บล็อกโพสต์ทั้งหมดภายใน CMS บทความเหล่านี้บางส่วนอาจปรากฏในนิตยสารซึ่งในกรณีนี้พวกเขามีความสัมพันธ์กับต่างประเทศที่สำคัญกับตารางอื่นที่มีข้อมูลเฉพาะของนิตยสาร นี่คือเวอร์ชันที่เรียบง่ายของไวยากรณ์การสร้างตารางสำหรับสองตารางเหล่านี้ที่มีแถวที่ไม่จำเป็นออกมา: CREATE TABLE `base_article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date_published` datetime DEFAULT NULL, `title` varchar(255) NOT NULL, `description` text, `content` longtext, `is_published` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `base_article_date_published` (`date_published`), KEY `base_article_is_published` (`is_published`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `mag_article` ( …

4
จะหาดัชนีที่ไม่ได้ใช้อย่างไร
ฉันกำลังทำงานกับคลังข้อมูล ฉันมีตารางที่มีระเบียนสูงถึง 200M ตารางเหล่านี้บางส่วนมีดัชนีประมาณ 20+ รายการ (ฉันไม่สามารถให้เหตุผลได้ว่าทำไมพวกเขาจึงถูกสร้างขึ้นตั้งแต่แรก) สิ่งนี้ทำให้งานในการรักษาดัชนีเหล่านี้เจ็บปวดเกินไปและมีผลกระทบโดยตรงต่องานนำเข้า DWH ทั้งในด้านประสิทธิภาพและเวลาทำงาน ฉันจะค้นหาดัชนีที่ใช้น้อยที่สุดในแต่ละตารางได้อย่างไร (เพื่อกำจัดพวกเขา)
11 sql-server  ssms 

5
วิธีเข้าถึงฐานข้อมูล SQL Server จากคอมพิวเตอร์เครื่องอื่นที่เชื่อมต่อกับเวิร์กกรุ๊ปเดียวกัน
ฉันได้สร้างแอปพลิเคชัน C # ซึ่งใช้ฐานข้อมูล SQL Server ฉันมีคอมพิวเตอร์เครื่องอื่นที่เชื่อมต่อกับฉันและกันในเวิร์กกรุ๊ป ฉันแบ่งปันแอปพลิเคชัน C # ของฉันกับคนอื่น ๆ เมื่อพวกเขาเปิดแอปพลิเคชันพวกเขาจะได้รับข้อผิดพลาด เครือข่ายที่เกี่ยวข้องหรือข้อผิดพลาดเฉพาะของอินสแตนซ์เกิดขึ้นขณะสร้างการเชื่อมต่อกับ SQL Server ไม่พบเซิร์ฟเวอร์หรือไม่สามารถเข้าถึงได้ แต่แอปพลิเคชันทำงานได้ดีบนพีซีของฉัน สตริงการเชื่อมต่อที่ฉันใช้คือ Data Source=ASHISHPC1\SQLEXPRESS;Initial Catalog=ACW;User ID=ash159;Password=ashish159 ซึ่งถูกเก็บไว้ใน.configไฟล์ แอปพลิเคชันทำงานได้ดีบนพีซีของฉัน สิ่งที่ฉันต้องทำ? ฉันเปิดใช้งาน TCP / IP ในเซิร์ฟเวอร์แล้ว แต่ยังคงมีข้อผิดพลาดเดิมอยู่ การเปลี่ยนแปลงบางอย่างในสตริงการเชื่อมต่อหรืออย่างอื่น?

1
วิธีการเชื่อมโยงสองแถวในตารางเดียวกัน
ฉันมีตารางที่แถวสามารถเชื่อมโยงซึ่งกันและกันและตามหลักเหตุผลความสัมพันธ์ไปทั้งสองทาง (โดยทั่วไปไม่มีทิศทาง) ระหว่างสองแถว (และหากคุณสงสัยว่าใช่นี่ควรเป็นหนึ่งตารางมันเป็นสองสิ่งที่มีเอนทิตี / ประเภทตรรกะที่เหมือนกัน) ฉันสามารถคิดถึงวิธีที่จะแสดงสิ่งนี้: เก็บความสัมพันธ์และสิ่งที่ตรงกันข้าม จัดเก็บความสัมพันธ์ทางเดียว จำกัด ฐานข้อมูลจากการจัดเก็บในทางอื่นและมีดัชนีสองรายการที่มีคำสั่งตรงกันข้ามสำหรับ FKs (ดัชนีหนึ่งรายการเป็นดัชนี PK) จัดเก็บความสัมพันธ์ทางเดียวด้วยดัชนีสองรายการและอนุญาตให้แทรกสองวิธีต่อไปได้ สร้างตารางการจัดกลุ่มบางประเภทและมี FK ไว้ในตารางต้นฉบับ (เพิ่มคำถามจำนวนมากตารางการจัดกลุ่มจะมีตัวเลขเท่านั้นเพราะเหตุใดถึงมีตารางทำให้ FK NULLable หรือมีกลุ่มที่มีแถวเดียวเชื่อมโยงกัน) อะไรคือข้อดีและข้อเสียที่สำคัญของวิธีการเหล่านี้และแน่นอนมีวิธีที่ฉันไม่เคยคิดบ้างไหม? นี่เป็น SQLFiddle จะเล่นกับ: http://sqlfiddle.com/#!12/7ee1a/1/0 (เกิดขึ้นเป็น PostgreSQL เนื่องจากเป็นสิ่งที่ฉันใช้ แต่ฉันไม่คิดว่าคำถามนี้เฉพาะเจาะจงมากกับ PostgreSQL) ปัจจุบันมีการจัดเก็บทั้งความสัมพันธ์และย้อนกลับเป็นตัวอย่าง

2
การสำรองข้อมูลบันทึกธุรกรรมของ SQL Server: ทดสอบว่าบันทึกท้ายดังต่อไปนี้เป็นข้อมูลสำรองบันทึกล่าสุดที่รู้จักหรือไม่
เรากำลังใช้ SQL Server ด้วยโหมดการกู้คืนแบบเต็ม ด้วยการสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลชุดต่างๆเราต้องการตรวจสอบว่าบันทึกการเชื่อมโยงนั้นสมบูรณ์จากการสำรองข้อมูลเต็มรูปแบบล่าสุดไปยังบันทึกหางปัจจุบันหรือไม่ (โดยไม่มีการกู้คืนการสำรองข้อมูลเหล่านี้จริง ๆ วัตถุประสงค์ของที่นี่คือการทดสอบความสอดคล้องของการสำรองข้อมูล) ฉันรู้วิธีการสำรองข้อมูลที่มีอยู่แล้ว: การใช้ RESTORE HEADERONLY ฉันได้รับ FirstLSN และ LastLSN ของทุกไฟล์ซึ่งสามารถเปรียบเทียบได้สำหรับไฟล์ที่ต่อเนื่องกันเพื่อตรวจสอบว่าเข้ากันได้หรือไม่ อย่างไรก็ตามฉันไม่ทราบวิธีการตรวจสอบว่าบันทึกท้ายติดตามการสำรองข้อมูลบันทึกล่าสุด หากฉันมีบันทึกหาง FirstLSN ฉันสามารถเปรียบเทียบกับ LastLSN ของข้อมูลสำรองบันทึกล่าสุดได้ แต่ฉันจะขอรับ FirstLSN ของบันทึกท้ายได้อย่างไร ฉันต้องการโซลูชันที่ใช้งานได้ตั้งแต่ SQL Server 2005 ขึ้นไป (ควรใช้ t-sql) จนถึงตอนนี้ฉันได้ค้นหา Google ไม่เป็นประโยชน์ Btw ฉันโพสต์สิ่งนี้ใน stackoverflow เป็นครั้งแรก; แต่ย้ายมาที่นี่เนื่องจากถูกตั้งค่าสถานะนอกหัวข้อที่นั่น แก้ไข ฉันลองทั้งสองวิธีแก้ปัญหาในตัวอย่างเล็ก ๆ (SQL Server 2005, 9.0.5057): BACKUP DATABASE …

1
สิทธิพิเศษที่จำเป็นสำหรับการใช้งานฟังก์ชั่นทริกเกอร์ใน PostgreSQL 8.4 มีอะไรบ้าง?
สิทธิพิเศษที่จำเป็นสำหรับการใช้งานฟังก์ชั่นทริกเกอร์ใน PostgreSQL 8.4 มีอะไรบ้าง? ดูเหมือนว่าสิทธิพิเศษที่กำหนดให้กับบทบาทนั้นไม่สำคัญสำหรับการเรียกใช้ฟังก์ชันทริกเกอร์ ฉันคิดว่าฉันได้เห็นบางวันว่าสิทธิ์ที่จำเป็นในการเรียกใช้ฟังก์ชันทริกเกอร์เป็นสิทธิ์ดำเนินการ แต่สำหรับเจ้าของตารางไม่ใช่บทบาทจริงที่ดำเนินการแอ็คชั่นซึ่งยิงทริกเกอร์ที่เรียกฟังก์ชันทริกเกอร์ ฉันไม่พบส่วนเอกสารที่อธิบายจุดนั้นมีความช่วยเหลืออะไรบ้าง?

3
ข้อกำหนดหน่วยความจำทั่วไปสำหรับ sql server 2008 r2
ฉันไม่ได้มีประสบการณ์กับงาน DBA แต่ฉันพยายามทำกรณีขอทรัพยากรเพิ่มเติมสำหรับเซิร์ฟเวอร์ sql ของเราและหวังว่าฉันจะได้คนฉลาด ๆ มาเสนอการประมาณคร่าวๆของสิ่งที่เราควรใช้ ฉันสงสัยว่าการจัดสรรทรัพยากรไอทีให้กับเซิร์ฟเวอร์ sql ที่ใช้งานจริงของเราอยู่ในระดับต่ำ ฮาร์ดแวร์และซอฟต์แวร์: ฐานข้อมูล: sql server 2008 r2 ฐานข้อมูลองค์กร Windows: Windows 2008 r2 Enterprise 64 บิตค่อนข้างแน่ใจว่าทำงานบน VMware หน่วยประมวลผล: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (โปรเซสเซอร์ 2 ตัว) หน่วยความจำที่ติดตั้ง: 4GB ฮาร์ดไดรฟ์สำหรับไฟล์ฐานข้อมูล: 300GB ฮาร์ดไดรฟ์สำหรับการสำรองข้อมูล: 150GB ฮาร์ดไดรฟ์สำหรับบันทึก: 100GB การประยุกต์ใช้: เรามีฐานข้อมูลหลัก 3 …

2
ไคลเอนต์ MariaDB Java เป็นสิ่งทดแทนที่สมบูรณ์แบบสำหรับ MySQL JDBC (Connector / J)?
สถานที่ : ฉันจัดส่งใบสมัคร Java ซึ่งจะทำให้การเชื่อมต่อ JDBC ไปยังฐานข้อมูล MySQL (ในช่วงเวลาของการเขียนนี้อาจเป็น 5.1 หรือ 5.5 แต่หวังว่าคำถามและคำตอบไม่ได้ขึ้นอยู่กับเวอร์ชันมาก) การสังเกต : เห็นได้ชัดว่าฉันสามารถใช้ไดรเวอร์ MySQL JDBC ( Connector / J ) หรือไดรเวอร์ MariaDB JDBC ( ไคลเอนต์ MariaDB Java ) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ข้อดีอย่างหนึ่งจากจุดยืนของ ISV คือไดรเวอร์ MariaDB นั้นได้รับใบอนุญาต LGPL ในขณะที่ MySQL เป็น GPL ที่ได้รับลิขสิทธิ์ ประสิทธิภาพของไดรเวอร์ MariaDBดูดีมาก คำถาม : ไดร์เวอร์ MariaDB …
11 mysql  mariadb  jdbc 

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

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