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

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

1
ฐานข้อมูลพร้อมไฟล์. mdf หลายไฟล์
ฉันค้นหาออนไลน์ แต่ไม่พบสิ่งที่ฉันกำลังมองหา ปัญหา / แบบสอบถามคือความรู้ของฉันฐานข้อมูลใน SQL Server ควรมีไฟล์. pdf หนึ่งไฟล์และอาจเป็นไฟล์. ndf และไฟล์. log หนึ่งไฟล์ ฉันได้เห็นฐานข้อมูลมากมายที่มีไฟล์ mdf หนึ่งไฟล์และไฟล์ ndf หลายไฟล์ แต่เมื่อเร็ว ๆ นี้ฉันเจอฐานข้อมูลบนเซิร์ฟเวอร์ที่ทุกฐานข้อมูลมีไฟล์ mdf หลายไฟล์ ฉันใช้การสำรองข้อมูลของฐานข้อมูลบางส่วนย้ายไปยังเซิร์ฟเวอร์อื่นและเรียกคืนไฟล์หลักเป็น. mdf และไฟล์อื่นทั้งหมดเป็น. ndf อย่างชัดเจนยกเว้นไฟล์บันทึกที่ถูกกู้คืนเป็น. log ตอนนี้คำถามของฉันคือ: มีภูมิปัญญาในการมีไฟล์. pdf หลายไฟล์สำหรับฐานข้อมูลหรือไม่? มีข้อเสียของการมีไฟล์. pdf หลายไฟล์หรือไม่? มันเป็น SQL Server 2008 R2 64bit Enterprise Edition คำแนะนำหรือตัวชี้ไปในทิศทางที่ถูกต้องจะชื่นชมมาก ขอบคุณ.

1
TSQL เหตุใดจึงมีอันดับสูงสุดเร็วขึ้นด้วยตัวแปร
ทุกเช้า ฉันทำงานกับ sql ที่ซับซ้อนพอสมควรเพื่อ 'รับ' ข้อมูลบางอย่างจากฐานข้อมูลผลิตภัณฑ์ของบุคคลที่สามเพื่อแสดงในแอปพลิเคชันของเราเอง ฉันเพิ่มในรายการที่เลือกเพื่อรับระเบียนสูงสุดจากตารางภายในแบบสอบถามย่อย (ถ้ามีเหตุผล) แบบสอบถามใช้เวลาเกือบ 3 นาทีในการส่งคืนชุดผลลัพธ์สุดท้าย 100 รายการโดยใช้ SELECT TOP 1 ... ฉันดูออนไลน์เพื่อดูการปรับปรุงสิ่งที่ฉันพยายามบรรลุและขอแนะนำให้ฉันเปลี่ยนการเลือกของฉันเพื่อใช้ตัวแปรดังต่อไปนี้ DECLARE @topCount INT SET @topCount = 1 SELECT TOP (@topCount) ... นี่ใช้แบบสอบถามเดียวกันจาก 3 นาทีถึง 1 วินาทีซึ่งยอดเยี่ยมมาก! แต่ทุกคนสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น
10 sql-server  t-sql 

1
ฉันจะให้สิทธิ์พิเศษในการเชื่อมต่อกับ SSIS ได้อย่างไร
ความพยายามเรียกใช้แพคเกจ SSIS โดยใช้ dtexec.exe ฉันได้รับข้อความแสดงข้อผิดพลาดนี้: Could not load package "D:\Filename.dtsx" because of error 0xC00160AE. Description: Connecting to the Integration Services service on the computer "" failed with the following error: "Access is denied." By default, only administrators have access to the Integration Services service. On Windows Vista and later, the …

3
สร้างใหม่ในดัชนีคลัสเตอร์ทำไมชุดข้อมูลย่อขนาด
เมื่อเราทำการสร้างใหม่ในดัชนีคลัสเตอร์บนตารางที่มีข้อมูลประมาณ 15gb ในนั้นและ datasize หดเป็น 5gb สิ่งนี้จะเป็นอย่างไร "data" ประเภทใดที่ถูกลบออกไป? ขนาดข้อมูล i หมายถึงคอลัมน์ "data" ของ DBCC sp_spaceused ก่อนสร้างใหม่บนดัชนีคลัสเตอร์: name rows reserved data index_size unused LEDGERJOURNALTRANS 43583730 39169656 KB 15857960 KB 22916496 KB 395200 KB หลังจากสร้างใหม่บนดัชนีคลัสเตอร์: name rows reserved data index_size unused LEDGERJOURNALTRANS 43583730 29076736 KB 5867048 KB 22880144 KB 329544 KB …

2
การลบไฟล์ข้อมูลทุติยภูมิ DBCC SHRINKFILE: ไม่สามารถย้ายหน้าได้เนื่องจากเป็นหน้าตารางงาน
ฉันมีมากเกินไปไฟล์ข้อมูลทุติยภูมิ (.ndf) tempdbที่สร้างขึ้นสำหรับ ในการลบไฟล์ส่วนเกินฉันต้องล้างไฟล์ (เนื้อหาจะถูกย้ายไปยังไฟล์อื่น): DBCC SHRINKFILE('tempdbfile8', EMPTYFILE); แล้วลบไฟล์: ALTER DATABASE tempdb REMOVE FILE tempdbfile8; แต่EMPTYFILEคำสั่งจะส่งคืนข้อผิดพลาด: DBCC SHRINKFILE: Page 8:41920 could not be moved because it is a work table page. Msg 2555, Level 16, State 1, Line 2 Cannot move all contents of file "tempdbfile8" to other places to …

1
คีย์ DISABLE ของ MySqlDump ไม่มีผลต่อการนำเข้า
ฉันได้ติดตามคำถามก่อนหน้านี้ของฉันเกี่ยวกับความเร็วการนำเข้าด้วย Inno-Tables (ประหลาดใจ!) สถานการณ์สมมติ ฉันพยายามนำเข้าฐานข้อมูลขนาดใหญ่ * การถ่ายโอนข้อมูลในเครื่อง dev ท้องถิ่นของฉันในเวลาที่เหมาะสม เรามีจำนวนมากKEYที่แนบมากับตารางซึ่งกลายเป็นคอขวด แต่ยังคงมีความสำคัญสำหรับระบบสดของเรา แนวทางของฉันหลังจากถามคำถามข้างต้นคือการลบKEY ...คำสั่งจากการถ่ายโอนข้อมูลนำเข้าและเพิ่มคีย์อีกครั้ง อย่างไรก็ตามฉันมักจะพบว่าตัวเองกำลังแก้ไขการถ่ายโอนข้อมูลปัจจุบันเพื่อนำเข้าภายในเครื่องและฉันเจอ "ความคิดเห็น" ตลกเหล่านี้ (The disable/enable keys-lines) -- -- Dumping data for table `monster` -- LOCK TABLES `monster` WRITE; /*!40000 ALTER TABLE `monster` DISABLE KEYS */; INSERT … INSERT … INSERT /*!40000 ALTER TABLE `monster` ENABLE KEYS */; …

2
ค้นหา fulltext ช้าเนื่องจากการประมาณการแถวไม่ถูกต้องอย่างดุร้าย
ข้อความค้นหาแบบเต็มกับฐานข้อมูลนี้ (การเก็บตั๋วRT ( Request Tracker )) ดูเหมือนจะใช้เวลานานมากในการดำเนินการ ตารางสิ่งที่แนบ (มีข้อมูลแบบเต็ม) ประมาณ 15GB สคีมาฐานข้อมูลมีดังนี้ประมาณ 2 ล้านแถว: rt4 = # \ d + ไฟล์แนบ ตาราง "public.attachments" คอลัมน์ | ประเภท | ตัวดัดแปลง | จัดเก็บข้อมูล | ลักษณะ ----------------- + ----------------------------- + - -------------------------------------------------- ------ ---------- + + ------------- id | จำนวนเต็ม ไม่ใช่ null ค่าเริ่มต้น nextval …

5
แทรกลงในส่วนที่เลือกลงในตารางที่เกี่ยวข้องหลายรายการโดยใช้ INSERT_IDENTITY
โอเคตั้งฉากแล้ว ฉันมีสามตาราง ( Table1, Table2และDataTable) และฉันต้องการแทรกลงในTable1และTable2ใช้DataTableเป็นแหล่งที่มา ดังนั้นสำหรับทุกแถวในDataTableฉันต้องการแถวในTable1และTable2และTable2ความต้องการที่จะมีการแทรกid(PK) จากTable1... ถ้าฉันจะทำสิ่งนี้ ... INSERT INTO Table1 SELECT A, B, C FROM MyTable INSERT INTO Table2 SELECT IDENTITY_INSERT(), D, E, F FROM MyTable ฉันได้รับการบันทึกลงในแทรกสุดท้ายIDTable1 a CURSORหรือWHILEloop เป็นวิธีเดียวที่จะทำเช่นนี้?

2
การสนับสนุน Parallel Scalar UDF เป็นการร้องขอคุณสมบัติที่เหมาะสมหรือไม่?
มีการบันทึกไว้ค่อนข้างดีว่าสเกลาร์ของ UDF เป็นแผนอนุกรมโดยรวม ฟังก์ชั่นที่ทำงานในแบบคู่ขนาน เมื่อมีจำนวนแถวเข้ามาในจุดที่ต้องคำนวณ UDF ทำไมเครื่องยนต์ไม่สามารถกระจายไปยังโปรเซสเซอร์ได้ หากไม่มีสถานะใน UDF คำสั่งนั้นไม่ควรสำคัญ มีการเรียกร้องเกี่ยวกับ UDF ที่เป็นกล่องดำจะต้องใช้เคอร์เซอร์ ฉันเห็นว่าเคอร์เซอร์ผู้ใช้ไม่สามารถทำให้ขนานภายใน SP สำหรับกรณีที่บางสถานะถูกเก็บรักษาไว้ระหว่างการทำซ้ำ แต่ดูเหมือนว่าควรจะเป็นแบบขนาน คะแนนพิเศษสำหรับการอธิบายว่าทำไมเครื่องยนต์บังคับให้แผนทั้งหมดเป็นอนุกรมแทนที่จะเป็นเพียงขั้นตอนการคำนวณ UDF การสนับสนุน UDF แบบขนานเป็นคุณสมบัติที่เหมาะสมในการร้องขอหรือไม่

3
ประสิทธิภาพการนำเข้า InnoDB
ฉันกำลังดิ้นรนกับการนำเข้าจำนวนมาก InnoDB- ตารางที่มีขนาดประมาณ 10 ล้านแถว (หรือ 7GB) (ซึ่งสำหรับฉันเป็นตารางที่ใหญ่ที่สุดที่ฉันเคยทำงานด้วย) ฉันค้นคว้าวิธีปรับปรุงความเร็วการนำเข้าของ Inno และในขณะที่การติดตั้งของฉันมีลักษณะดังนี้: /etc/mysql/my.cnf/ [...] innodb_buffer_pool_size = 7446915072 # ~90% of memory innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_io_capacity = 5000 innodb_thread_concurrency=0 innodb_doublewrite = 0 innodb_log_file_size = 1G log-bin = "" innodb_autoinc_lock_mode = 2 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit=2 innodb_buffer_pool_instances=8 import is done …

1
ทำไม UPDATE เทียบกับตารางที่มีทริกเกอร์ INSTEAD OF UPDATE ดูเหมือนว่าจะทำการแทรกดัชนีคลัสเตอร์รวมถึงการอัพเดตดัชนีคลัสเตอร์
ฉันจะเริ่มต้นด้วยตัวอย่างง่ายๆมาก: สองตารางทั้งคู่ด้วย schema เดียวกันทำคลัสเตอร์บน PK แต่หนึ่งในนั้นมีINSTEAD OF UPDATEทริกเกอร์: CREATE TABLE Standard ( PK UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED, V INT NOT NULL ) GO CREATE TABLE InsteadOf ( PK UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED, V INT NOT NULL ) GO INSERT Standard (PK, V) VALUES ('1E58B555-B073-471E-B576-4B09C8E18976', 0) INSERT InsteadOf (PK, V) VALUES …

6
ประมาณการการเติบโตของฐานข้อมูลที่คาดการณ์ไว้
ฉันเพิ่งเริ่มทำงานกับ SQL Server 2008 ในฐานะผู้ฝึกหัด DBA ฉันต้องการคำนวณขนาดของฐานข้อมูล แต่ยังประเมินการเติบโตในช่วงหลายเดือนที่ผ่านมาและการเติบโตที่คาดการณ์ไว้ในอีก 12 เดือนข้างหน้า ฉันสามารถใช้คำสั่ง sp_spaceused เพื่อคำนวณขนาดจริง แต่ฉันจะคำนวณทุกอย่างได้อย่างไร

2
ปัญหาการละเมิดข้อ จำกัด กุญแจต่างประเทศ
ฉันได้ระบุ 3 สถานการณ์ นักเรียนที่ไม่มีการลงทะเบียน นักเรียนที่มีการลงทะเบียน แต่ไม่มีเกรด นักเรียนที่มีการลงทะเบียนและผลการเรียน มีทริกเกอร์ในตารางการลงทะเบียนเพื่อคำนวณเกรดเฉลี่ย หากนักเรียนมีคะแนนจะทำการอัปเดตหรือแทรกรายการลงในตารางเกรดเฉลี่ย ไม่มีเกรดไม่มีรายการตารางเกรดเฉลี่ย ฉันสามารถลบนักเรียนที่ไม่มีการลงทะเบียน (# 1) ฉันสามารถลบนักเรียนที่มีการลงทะเบียนและผลการเรียน (# 3 ด้านบน) แต่ฉันไม่สามารถลบนักเรียนที่มีการลงทะเบียน แต่ไม่มีคะแนน (# 2) ฉันได้รับการละเมิดข้อ จำกัด ในการอ้างอิง คำสั่ง DELETE ขัดแย้งกับข้อ จำกัด การอ้างอิง "FK_dbo.GPA_dbo.Student_StudentID" ความขัดแย้งเกิดขึ้นในฐานข้อมูล "", ตาราง "dbo.GPA", คอลัมน์ 'StudentID' หากฉันไม่สามารถลบนักเรียนใหม่ที่ไม่มีการลงทะเบียน (และไม่มีรายการ GPA) ฉันจะเข้าใจการละเมิดข้อ จำกัด แต่ฉันสามารถลบนักเรียนคนนั้นได้ เป็นนักเรียนที่มีการลงทะเบียนและไม่มีคะแนน (และยังไม่มีรายการเกรดเฉลี่ย) ที่ฉันไม่สามารถลบได้ ฉันได้ติดตั้งทริกเกอร์ของฉันเพื่อให้สามารถไปข้างหน้า ทีนี้ถ้าคุณมีการลงทะเบียนทริกเกอร์จะแทรกคุณลงในตารางเกรดเฉลี่ยไม่ว่าจะเกิดอะไรขึ้น แต่ฉันไม่เข้าใจปัญหาพื้นฐาน คำอธิบายใด ๆ …

1
ธุรกรรมแยกระดับ SNAPSHOT กับ TRUNCATE?
ฉันหวังว่าจะมีใครบางคนแสดงความเข้าใจบางอย่างเกี่ยวกับพฤติกรรมนี้ซึ่งฉันไม่ได้คาดหวังเกี่ยวกับการแยก SNAPSHOT กับ TRUNCATE ฐานข้อมูล: อนุญาตการแยก Snapshot = True; Is Snapshot On Read ที่ได้รับการยอมรับ = False ขั้นตอนที่ 1 (แทนที่เนื้อหาของ table foo จาก SELECT ที่ซับซ้อนที่รันเป็นเวลานานด้วยการรวมจำนวนมาก): BEGIN TRAN; TRUNCATE TABLE foo; INSERT INTO foo SELECT...; COMMIT; ขั้นตอนที่ 2 (อ่านจากตาราง foo): SET TRANSACTION ISOLATION LEVEL SNAPSHOT; SELECT * FROM foo; หากโพรซีเดอร์ 1 กำลังรันในขณะที่โพรซีเดอร์ …

1
ความถี่ของการแฮช / การเรียงลำดับที่หกลงใน tempdb เกี่ยวข้องกับอะไร
แอปพลิเคชั่นองค์กรของเราใช้ SQL Server สำหรับจัดเก็บข้อมูลและเป็นระบบ OLTP เป็นหลัก อย่างไรก็ตามส่วนประกอบที่สำคัญของแอปพลิเคชันของเราสร้างภาระงาน OLAP ที่มีนัยสำคัญ เวลาในการเขียนของเราไปที่ tempdb ประมาณ 100ms แนวโน้มนี้ถือเป็นช่วงเวลาและALLOW_SNAPSHOT_ISOLATIONมีการเปิดปิด เรากำลังแก้ไขปัญหานี้เกี่ยวกับปัญหาและสิ่งที่น่าสนใจเพียงอย่างเดียวที่เราพบคือมีแฮชและการเรียงลำดับการรั่วไหลจำนวนมากไปยัง tempdb เราคาดการณ์ว่าสิ่งนี้มาจากภาระงาน OLAP ของเรา คำถาม ความถี่ของการรั่วไหลเกี่ยวข้องกับอะไร? ใด? กี่ครั้ง / วินาที? ข้อมูลเบื้องต้นของเราระบุว่าเรามีแฮชการรั่วไหลประมาณ 2 ครั้งต่อวินาทีและ 25 การเรียงลำดับหกครั้งต่อนาที เป็นไปได้หรือไม่ที่ความถี่ของการรั่วไหลนี้อาจเป็นผู้ร้ายหลักในเวลาแฝงการเขียนระดับสูงของเรา ข้อมูลอื่น ๆ เรากำลังใช้หลายไฟล์สำหรับ tempdb ตามที่แนะนำต่อจำนวนคอร์ ไฟล์ tempdb อยู่ใน RAID 1 + 0 SAN (ที่มี SSD ประสิทธิภาพสูง) แต่เป็นอุปกรณ์เดียวกับข้อมูล DB หลักและไฟล์บันทึก …

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