คำถามติดแท็ก tempdb

TempDB เป็นส่วนหนึ่งของ MS SQL Server เป็นฐานข้อมูลระบบที่ทำหน้าที่เป็นพื้นที่เก็บข้อมูลสำหรับตารางชั่วคราววัตถุภายในและเวอร์ชันของแถว

4
วิธีการระบุแบบสอบถามที่เติมบันทึกธุรกรรม tempdb?
ฉันต้องการทราบวิธีการระบุแบบสอบถามที่ถูกต้องหรือเก็บ proc ซึ่งจริง ๆ แล้วกรอกบันทึกการทำธุรกรรมของฐานข้อมูล TEMPDB

2
จะค้นหาคำสั่ง SQL ที่ทำให้ tempdb เติบโตได้อย่างไร?
tempdb ของเซิร์ฟเวอร์ (SQL Server 2008) เพิ่มขึ้นเป็น 500GB + หลายครั้งทุกเดือน เป็นไปได้ไหมที่จะทราบว่าคำสั่ง SQL ใดที่ทำให้เกิดปัญหานี้? ปัญหานี้มักจะไม่ได้เกิดจากcreate table #temp...; insert into #temp...หรือเกิดจากการselect ... into #temp...รวมที่ซับซ้อน ขนาดเริ่มต้นของบางส่วนของ tempdb แฟ้มยังมีการตั้งค่าโดยอัตโนมัติเพื่อให้ค่าที่ยิ่งใหญ่กว่าทุกครั้ง จะป้องกันได้อย่างไร? บางครั้งแผนแคชป้องกันการปรับขนาด / ลดขนาดไฟล์ วิธีการค้นหาที่หนึ่งถือ tempdb หรือไม่

1
วิธีปฏิบัติที่ดีที่สุดในการลดขนาด Tempdb ในสภาพแวดล้อมการผลิต
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา แนวปฏิบัติที่เหมาะสมที่สุดที่จะใช้เมื่อลดขนาด db ชั่วคราวใน SQL Server 2008 คืออะไร การใช้สิ่งต่อไปนี้มีความเสี่ยงหรือไม่? use tempdb GO DBCC FREEPROCCACHE -- clean cache DBCC DROPCLEANBUFFERS -- clean buffers DBCC FREESYSTEMCACHE ('ALL') -- clean system cache DBCC FREESESSIONCACHE -- clean session cache DBCC SHRINKDATABASE(tempdb, 10); -- shrink …

3
ย้ายและสร้างไฟล์ tempdb ใหม่อย่างปลอดภัย
สองสิ่งที่ฉันอยากรู้ คุณจะย้าย tempdb อย่างปลอดภัยได้อย่างไรด้วยการหยุดทำงานน้อยที่สุด คุณต้องการไฟล์ tempdb กี่ไฟล์ มันคือ 1 ไฟล์ต่อคอร์? ดังนั้นควอดคอร์ไฟล์ 4 tempdb สร้างไฟล์ใหม่สามไฟล์?

2
จะเกิดอะไรขึ้นเมื่อไม่มีหน่วยความจำกายภาพเหลืออยู่สำหรับ SQL Server
ในขณะที่ Google กำลังค้นหาข้อมูลที่ขัดแย้งกัน บางเว็บไซต์ระบุว่าเมื่อไม่มีหน่วยความจำกายภาพเหลืออยู่สำหรับข้อมูล SQL Server จะย้ายข้อมูลที่มีอยู่แล้วลงใน TEMPDB (ดู: SQL Server: Demystifying TempDb และคำแนะนำ ) แต่เว็บไซต์อื่น ๆ ระบุว่าเมื่อมีหน่วยความจำกายภาพเหลืออยู่ไม่เพียงพอระบบปฏิบัติการสามารถใช้ PAGE FILE และย้ายข้อมูลจากหน่วยความจำกายภาพไปยังมัน (ดูหน้าไฟล์สำหรับ SQL Server ) ฉันสงสัยว่า SQL Server เขียนข้อมูลเมื่อใดหน่วยความจำกายภาพหมด? หากต้องการ tempdb หรือไปยังไฟล์หน้า OS? หรืออาจจะทั้งคู่?

1
เรียงลำดับการรั่วไหลไปยัง tempdb แต่แถวโดยประมาณจะเท่ากับแถวจริง
บน SQL Server 2016 SP2 ที่มีหน่วยความจำสูงสุดตั้งไว้ที่ 25GB เรามีแบบสอบถามที่ดำเนินการประมาณ 80 ครั้งในหนึ่งนาที แบบสอบถามรั่วไหลประมาณ 4,000 หน้าไปยัง tempdb ซึ่งทำให้ IO จำนวนมากบนดิสก์ของ tempdb เมื่อคุณดูที่แผนแบบสอบถาม (แบบสอบถามแบบง่าย) คุณจะเห็นว่าจำนวนแถวโดยประมาณเท่ากับจำนวนแถวจริง แต่ยังคงเกิดการรั่วไหล ดังนั้นสถิติที่ล้าสมัยไม่สามารถเป็นสาเหตุของปัญหาได้ ฉันทำการทดสอบและแบบสอบถามต่อไปนี้รั่วไหลไปยัง Tempdb: select id --uniqueidentifier from SortProblem where [status] ='A' order by SequenceNumber asc option (maxdop 1) แต่ถ้าฉันเลือกคอลัมน์อื่นจะไม่มีการรั่วไหลเกิดขึ้น: select startdate --datetime from SortProblem where [status] ='A' order …

1
การช่วงชิง TempDB
เรามีฐานข้อมูล OLTP 40GB ที่ใช้งานอยู่บน SQL Server 2014 SP1 พบว่าแบบสอบถามจะช้าเมื่อรอ IO_Completion ความยาวคิวดิสก์ที่เพิ่มขึ้นเป็น 900 และ SQL Server หยุดตอบสนอง สิ่งที่เราพยายาม: รีสตาร์ทอินสแตนซ์และในอีกไม่กี่นาทีมันก็จะเริ่มทำงานในลักษณะเดียวกัน หลังจากรีสตาร์ทครั้งที่สองเราเปลี่ยนขนาดเริ่มต้นของแต่ละ tempdb datafile (มีไฟล์ข้อมูล 16 ไฟล์ที่สร้างขึ้น) และเริ่มทำงานได้อย่างถูกต้อง หมายเหตุ: เรากำลังใช้ตัวแปรตารางสำหรับชุดผลลัพธ์ระดับกลาง ชุดผลลัพธ์เหล่านี้มีขนาดเล็กมาก มันเกิดขึ้นสองครั้งในหนึ่งเดือน ทุกครั้งที่ฉันเพิ่มพื้นที่ว่างเล็กน้อยลงในไฟล์ข้อมูลด้วยตนเองจากนั้นจะเริ่มทำงานตามปกติ สิ่งที่น่าสนใจกว่าก็คือการตั้งค่าเดียวกัน (ฮาร์ดแวร์เดียวกัน, โฟลเดอร์เดียวกันและการตั้งค่าไฟล์, ปริมาณงานเดียวกัน) ที่เรามีใน SQL Server 2008 R2 และ SQL Server 2012 ทำงานได้ดี กรุณาช่วยเราหาวิธีแก้ไขปัญหาอย่างถาวร ขนาดเริ่มต้นของไฟล์ข้อมูลทั้งหมดคือ 1,000MB เดียวกันปัจจุบันเป็นแต่ละไฟล์ 1500MB ทั้งหมดเหมือนกัน …

3
ดิสก์ระบบมีเนื้อที่ไม่เพียงพอเมื่อเรียกใช้แบบสอบถาม SQL จำนวนมากใน SQL Server 2012
ฉันค่อนข้างใหม่กับ SQL Server 2012 ฉันจะขอบคุณถ้ามีคนช่วย ฉันกู้คืนสำเนาของฐานข้อมูลขนาดใหญ่เป็น SQL Server 2012 และฉันพยายามเรียกใช้แบบสอบถามแบบง่าย ๆ ฉันพยายามเรียกใช้แบบสอบถามแบบใช้เลือกข้อมูลกับตารางของฐานข้อมูล136898115บรรทัด SELECTแบบสอบถามนี้มีWHEREข้อง่าย ๆเท่านั้น ทุกครั้งที่ฉันเรียกใช้คิวรีนี้มันล้มเหลวเพราะดิสก์ของระบบ (พาร์ติชันที่ติดตั้ง Windows - C:\) หมดพื้นที่ (พาร์ติชันนี้มีพื้นที่ว่างเพียง 6GB) และฉันไม่เข้าใจว่าทำไม ฉันกำหนด tempdb ของฉันให้อยู่ในไดรฟ์อื่นซึ่งมีพื้นที่ว่างมากกว่า 14 เทราไบต์ แน่นอนว่าฐานข้อมูลของฉันอยู่ในไดรฟ์อื่นเช่นกัน อะไรทำให้พาร์ติชั่นระบบของฉันไม่มีที่ว่าง? มันเป็นไฟล์หน้าหรือไม่

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

2
อะไรคือจุดร้อนในบริบทของการเพิ่มไฟล์ไปยัง tempdb?
ฉันพยายามค้นหาว่าสามารถเพิ่มไฟล์ tempdb ลงใน SQL Server ได้หรือไม่โดยไม่ต้องเริ่มบริการ SQL Server อีกครั้ง ฉันเห็นคำตอบนี้ที่นี่ในผู้ดูแลฐานข้อมูล: Tempdb เพิ่มไฟล์ต้องมีการรีสตาร์ท และหนึ่งคำตอบระบุว่า: เพิ่ม - ไม่จำเป็นต้องหยุดทำงาน แม้ว่าฌอนจาก Microsoft ชี้ให้เห็นว่า SQL จะต้องการใช้ไฟล์ที่เติมด้านล่าง หากคุณไปจากไฟล์ข้อมูล 1 ไฟล์และเพิ่มมากขึ้นแล้ว SQL จะใช้ไฟล์ใหม่ชั่วครู่หนึ่ง แต่ประสิทธิภาพของคุณจะไม่แย่ไปกว่าการมีเพียงไฟล์เดียว อย่างไรก็ตามหากคุณมี 2+ แล้วและเพิ่มอีกหนึ่งมันจะฮอตสปอตในใหม่และลดประสิทธิภาพ อย่างไรก็ตามความคิดเห็นข้อควรระวังต่อไปนี้: ฉันจะใส่ภาคผนวกไว้ในส่วน "เพิ่ม": "เพิ่ม: ไม่ แต่คุณมักจะมีความไม่สมดุลดังนั้นคุณจะพบว่าร้อนแรงซึ่งอาจทำให้สิ่งต่าง ๆ แย่ลงมาก" ฉันมีคำถามต่อไปนี้เกี่ยวกับความคิดเห็นนั้น แต่ได้รับคำแนะนำให้ถามคำถามเหล่านั้นในคำถามใหม่ของฉันเอง (คำถามนี้) แทนที่จะถามผู้แสดงความคิดเห็นผ่านความคิดเห็นในคำตอบของคำถามนั้น โดยเฉพาะ: การจำที่ร้อนแรงคืออะไร (ฉันได้รับข้อมูลบางอย่างผ่านทาง Google แต่ไม่มีรายละเอียดว่าจะเกิดอะไรขึ้นกับฮอตสปอตบน tempdb หลังจากเพิ่มไฟล์) สิ่งที่เกี่ยวกับการจำร้อนทำให้สิ่งเลวร้ายยิ่งขึ้นใน …

1
เหตุใดจึงตัดทอนตาราง temp ที่ส่วนท้ายของโพรซีเดอร์ที่เก็บไว้ซึ่งสร้างพื้นที่ว่าง tempdb ให้เร็วขึ้น?
SQL Server แคชตาราง temp ที่สร้างขึ้นภายในโพรซีเดอร์ที่เก็บไว้และเปลี่ยนชื่อเพียงเมื่อโพรซีเดอร์สิ้นสุดลงและถูกเรียกใช้งานในภายหลัง คำถามของฉันเกี่ยวกับเมื่อมีการปล่อยพื้นที่ tempdb ผมเคยอ่านว่าตารางจะถูกตัดทอนในตอนท้ายของขั้นตอนที่ ฉันได้อ่านความคิดเห็นว่าสิ่งนี้ได้รับการจัดการในแต่ละช่วงและเห็นคำถามว่าจำเป็นต้องตอบคำถามเกี่ยวกับการล้างข้อมูลบน MSDNหรือไม่ แต่ถ้าหากมันไม่ถูกดำเนินการโดยเซสชั่นเดียวกันสองครั้ง? ฉันเคยได้ยินว่ามีกระบวนการเก็บรวบรวมขยะในพื้นหลังที่ทำให้มีพื้นที่ว่างเมื่อตารางไม่อยู่ในขอบเขต การตัดทอนตาราง temp ที่ส่วนท้ายของโพรซีเดอร์ที่เก็บไว้ซึ่งทำให้ดูเหมือนว่าพื้นที่ที่ตารางใช้ใน tempdb สำหรับข้อมูลที่จะเผยแพร่เร็วกว่าถ้าไม่มีการใช้คำสั่ง truncate แม้จะมีความคาดหวังที่ตรงกันข้าม ทำไม? อะไรคือความสัมพันธ์ของประสิทธิภาพในการใช้งานหรือไม่ใช้คำสั่งตัดทอน เมื่อใช้การแยก SNAPSHOT, tempdb มักจะเครียดและฉันคิดว่าการปล่อยพื้นที่ที่ใช้ใน tempdb จากตาราง tempdb ขนาดใหญ่โดยเร็วที่สุดจะช่วยป้องกันไม่ให้ tempdb เติบโตอย่างไม่จำเป็น การประหยัดพื้นที่ที่มีศักยภาพนี้จะมาพร้อมกับประสิทธิภาพหรือไม่ นี่คือรหัสบางส่วนในการทำซ้ำปัญหา (ส่วนใหญ่มาจาก @TheGameiswar โดยมีการเปลี่ยนแปลงบางอย่าง): SET NOCOUNT ON; GO ALTER PROC usp_test AS BEGIN IF object_id('tempdb..#temp') IS NOT NULL …

1
CREATE TABLE SomeSchema # TempTableName มีข้อบกพร่องหรือไม่
ทดสอบเตียงง่าย ๆ : USE tempdb; GO /* This DROP TABLE should not be necessary, since the DROP SCHEMA should drop the table if it is contained within the schema, as I'd expect it to be. */ IF COALESCE(OBJECT_ID('tempdb..#MyTempTable'), 0) <> 0 DROP TABLE #MyTempTable; IF EXISTS (SELECT 1 FROM sys.schemas …

1
พฤติกรรมของ SQL Server TempDB ในสภาพแวดล้อมของหน่วยความจำขนาดใหญ่
การอ่านคำถามนี้ทำให้ฉันนึกถึงคำถามที่ฉันได้ซักพักหนึ่งแล้ว เรามี SQL Server ที่มี RAM ขนาด 512GB ฐานข้อมูลหลักคือ 450 GB เราเห็นการกระทำค่อนข้างมากใน TempDB (ตกลงฉันคิดว่ามันเป็น "การกระทำค่อนข้างมาก" - อาจไม่ได้!) ฉันติดตั้งเซิร์ฟเวอร์ตัวอย่างของ RamDisk Plus สร้าง ramdrive 50GB ชี้ไปที่ TempDB แล้วไม่เห็นการปรับปรุงประสิทธิภาพเลย การเขียนไปที่ TempDB มักจะส่งผลให้เกิดการเขียนทางกายภาพจริงไปยังดิสก์เสมอหรือเป็น TempDB ที่เขียนโดย SQL Server สำหรับการเขียนที่ล่าช้าเช่นในแคชของระบบไฟล์ Windows ramdisk ไม่มีจุดหมายในสถานการณ์นี้หรือไม่? ฉันรู้ว่า SQL Server 6.5 ได้รับการสนับสนุนสำหรับ TempDB-In-Ram แต่ฉันเห็นว่าเลิกใช้มานานแล้ว!

2
SQL Server tempdb บนดิสก์ RAM หรือไม่
ฐานข้อมูลแอปพลิเคชันผู้ขายของเรานั้นเข้มงวดมาก TempDB เซิร์ฟเวอร์เป็นเสมือน (VMWare) ที่มี 40 คอร์และ RAM 768GB โดยใช้ SQL 2012 Enterprise SP3 ฐานข้อมูลทั้งหมดรวมถึง TempDB อยู่ใน Tier 1 SSD ใน SAN เรามีไฟล์ข้อมูล tempdb 10 ไฟล์แต่ละไฟล์มีขนาด 1GB และมีการเติบโตอัตโนมัติ เช่นเดียวกันกับไฟล์บันทึก 70GB มีการตั้งค่าค่าสถานะการสืบค้นกลับ 1117 & 1118 แล้ว sys.dm_io_virtual_file_stats แสดงมากกว่า 50 Terabytes อ่าน / เขียนข้อมูล tempdb & ล็อกไฟล์ในเดือนที่ผ่านมาโดยมี io_stall สะสม 250 ชั่วโมงหรือ 10 …

3
วิธีปฏิบัติที่ดีที่สุดสำหรับไฟล์บันทึก tempdb
ฉันได้อ่านหลายบล็อกที่นี่และมีเกี่ยวกับวิธีการกำหนดค่า tempdb แฟ้มข้อมูล แต่ไม่ได้ฉันพบข้อมูลใด ๆ เกี่ยวกับการล็อกไฟล์ tempdb นี่เป็นกลยุทธ์ที่ฉันใช้กับ tempdb ของฉัน: ฉันใช้คำแนะนำของ Paul Randalในการแบ่งไฟล์ข้อมูล tempdb ของฉัน ฉันได้ตั้งค่าขนาดของไฟล์ข้อมูล tempdb ให้เป็นค่าสูงสุดและปิดการใช้งานอัตโนมัติ ตัวอย่างเช่นฉันมีพื้นที่ว่างในดิสก์ 100GB และตั้งขนาดของไฟล์ข้อมูล 8 tempdb ของฉันเป็น 10gb ต่อไฟล์ วิธีนี้ช่วยป้องกันการแตกแฟรกเมนต์บนดิสก์ตามที่ Brent Ozar แนะนำและฉันมี 20GB ฟรีสำหรับไฟล์บันทึกของฉัน แต่ชอบพูดว่าไม่มีใครจะพูดคุยเกี่ยวกับแฟ้มบันทึก tempdb ฉันควรทำอย่างไรกับมัน? ในการตั้งค่าของฉันไฟล์นี้อยู่ในที่เดียวกับไฟล์ข้อมูล tempdb ขนาดและค่า autogrowth ที่ฉันควรใช้กับล็อกไฟล์ tempdb คืออะไร

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