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

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

1
เหตุใดจึงไม่ใช้คีย์หลัก (คลัสเตอร์) ในการสืบค้นนี้
ฉันมีตาราง SQL Server 2008 R2 ซึ่งโครงสร้างสกีมามีลักษณะดังนี้: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] …

1
แผนแบบสอบถามเปลี่ยนประสิทธิภาพที่แย่ลงใน SQL Server 2014
เราเพิ่งอัพเกรดเซิร์ฟเวอร์ของเราจาก SQL Server 2008R2 เป็น SQL Server 2014 เรามีข้อความค้นหาที่ทำงานได้ดีในปี 2008R2 แต่ตอนนี้ในปี 2014 ทำงานช้าลงอย่างไม่น่าเชื่อมากและมีแผนปฏิบัติการที่ไม่ดี ฉันได้ทำการทดสอบหลายครั้ง ... สลับ 2014 DB กลับไปเป็นโหมดเข้ากันได้ 2008/2012 ทดสอบแบบสอบถามโดยใช้การแบ่งหน้า ทั้งสองอย่างนั้นส่งผลให้คิวรีทำงานเหมือนกันกับที่ทำและรวดเร็วเหมือน SQL Server 2008R2 เหตุใดแผนไม่ดีและแบบสอบถามทำงานนานใน SQL Server 2014 ภาพนี้แสดงข้อความค้นหา 2 คำโดยหนึ่งแถวใช้หมายเลขตามที่เรียกใช้ในปี 2008R2 จากนั้นรูปที่สองคือการแก้ไขด้วยการแบ่งหน้า ทั้งสองวิ่งในปี 2014 ทั้งสองแตกต่างกันมาก แต่ในปี 2008 เราเห็นประสิทธิภาพการทำงานเหมือนว่าเราใช้เลขหน้าในปี 2014

1
รีเซ็ตการใช้งานเซิร์ฟเวอร์ SQL
ในสภาพแวดล้อมการพัฒนาของฉันฉันเล่นรอบกับแบบสอบถาม สำหรับสิ่งที่ฉันต้องรีเซ็ตหน่วยความจำ SQL Server แผน ฯลฯ ซึ่งสามารถมั่นใจได้ว่าแบบสอบถามของฉันเป็นเพียงกระบวนการความเครียด / การทำงานบนเซิร์ฟเวอร์ที่มีการรีเซ็ตค่าทั้งหมด ไม่กี่สิ่งที่ฉันทำ จุดตรวจการยิง DROPCLEANBUFFERS DBCC; DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB DBCC FREESESSIONCACHE DBCC SQLPERF ("sys.dm_os_wait_stats", CLEAR); ฉันทำถูกต้องหรือไม่ หรือฉันต้องการข้อมูลเพิ่มเติมเพื่อล้างหรือดูสถิติใหม่

3
กำหนดค่า RAM สำหรับ SQL Server และ NUMA
ผู้ดูแลฐานข้อมูลอุบัติเหตุที่นี่ คำถาม: คุณจะยังคง จำกัด RAM สูงสุดสำหรับ SQL Server ด้วยตนเองแม้ว่าจุดประสงค์เดียวของเซิร์ฟเวอร์นั้นคือเพื่อให้บริการโปรแกรมฐานข้อมูล SQL Server เท่านั้น ฉันมีเซิร์ฟเวอร์ Microsoft Windows 2012 R2, SQL Server 2012 Std, พร้อม 32GB RAM ผู้ดูแลระบบเข้าสู่ระบบ SQL Server อย่างต่อเนื่องเพื่อใช้คอนโซลและทั้งหมด ประการที่สองคุณจะตรวจสอบว่าเซิร์ฟเวอร์ Windows นี้เปิดใช้งาน NUMA ได้อย่างไร

2
การแบ่งพาร์ติชัน SQL Server 2008 R2 - FileGroup เดียวกัน, 1 ไฟล์, 2 partition_numbers - ช่วยเหลือ
เป็นครั้งแรกที่ฉันแบ่งพาร์ติชันใน SQL Server ฉันเรียนรู้จากคู่มือ Brent Ozar ซึ่งยอดเยี่ยม :) สองสามครั้งที่ฉันได้พบกับสถานการณ์แปลก ๆ เมื่อฉันวิ่ง: SELECT * FROM ph.FileGroupDetail ORDER BY partition_number Go มีกลุ่มไฟล์เดียวกันแสดงสองครั้งโดยมี 2 partition_numbers ที่แตกต่างกัน 1 อย่างถูกต้องในตอนท้ายด้วยค่าช่วงอื่น ๆ ที่เริ่มต้นด้วย null range_value คลิกที่นี่เพื่อดูภาพขยาย คำถามสองข้อ: สิ่งนี้เกิดขึ้นได้อย่างไรฉันไปผิดที่ไหน ฉันจะแก้ไขปัญหานี้ได้อย่างไรซึ่งหมายถึงวิธีกำจัดอย่างใดอย่างหนึ่งในตอนเริ่มต้นเนื่องจากฉันมีพาร์ติชันว่างเปล่าที่จุดเริ่มต้น ฉันพยายามลบไฟล์ (ทำงานเมื่อมันว่างเปล่า) และ filegroup แต่ filegroup บอกว่าไม่สามารถลบได้ มีใครช่วยอธิบายได้ว่าเรื่องนี้เกิดขึ้นได้อย่างไรและจะกำจัดรายการพาร์ติชั่น 2 ได้อย่างไร?

2
PLE ต่ำใน NUMA โหนด 000 สูงถึง 001
ฉันกำลังดู PLE (Page Life Expectancy) ข้ามโหน NUMA บนเซิร์ฟเวอร์ SQL ของเราและพบว่ามีการกระจายค่อนข้างแปลก NUMA node 000 มี PLE ต่ำมากเมื่อเทียบกับ 001 ฉันไม่แน่ใจว่าทำไมจึงเป็นเช่นนี้ ฉันได้ตรวจสอบเซิร์ฟเวอร์ SQL อื่น ๆ หลายตัวในสภาพแวดล้อมของเราและเซิร์ฟเวอร์ที่ใช้งานจริงอื่นไม่มีลักษณะการทำงานนี้ ระบบกำลังเรียกใช้ SQL Server 2012 Enterprise Edition บน Dell m620 พร้อม 256GB Ram มันเป็นเครื่อง 2 ซ็อกเก็ต 6 คอร์ (เปิดใช้งาน HT) MAXDOP ถูกตั้งค่าไว้ที่ 6 โมดูลหน่วยความจำ AFAIK ได้รับการติดตั้งอย่างสม่ำเสมอทั่วทั้งหน่วยความจำของซีพียู มีบางอย่างบอกฉันว่า NUMA …

1
เป็นไปได้หรือไม่ที่จะสำรองและเรียกคืนมุมมองที่เป็นรูปธรรมด้วยข้อมูล
ฉันมีมุมมองที่เป็นรูปธรรมซึ่งยากต่อการคำนวณซึ่งฉันต้องการสำรองและเรียกคืนโดยใช้ข้อมูลที่จัดเก็บจริงไม่ใช่โดยการคำนวณใหม่ เป็นไปได้ใน PostgreSQL 9.4? (ทางเลือกคือการสร้างตารางจริง แต่ยากที่จะ "รีเฟรช")

9
MongoDB ไม่เริ่มทำงานหลังจากเปลี่ยนไดเรกทอรีข้อมูล
ฉันได้ติดตั้งmongodbอินสแตนซ์โดยใช้yum . ตอนนี้ทุกอย่างทำงานได้ดี service mongod startผมเริ่มใช้บริการ มันใช้งานได้ดี จากนั้นฉันเปลี่ยนdata directoryและlog pathในไฟล์กำหนดค่า ฉันรีสตาร์ทเซิร์ฟเวอร์อีกครั้งและเริ่มบริการ แต่ฉันได้รับข้อผิดพลาดด้านล่าง: Restarting mongod (via systemctl): Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details. [FAILED] เมื่อฉันให้systemctl status mongod.serviceฉันได้รับด้านล่าง: Loaded: loaded (/etc/rc.d/init.d/mongod) Active: failed (Result: exit-code) since Wed 2015-03-18 11:35:56 IST; 22s ago Process: 10672 ExecStop=/etc/rc.d/init.d/mongod …

1
เหตุใดแบบสอบถาม SQL Server ของฉันจึงทำงานต่างจาก UPDATE มากกว่า SELECT
ฉันเขียนแบบสอบถาม SQL Server ที่อัปเดตระเบียนให้มีหมายเลขตามลำดับหลังจากแบ่งพาร์ติชันในเขตข้อมูล เมื่อฉันเรียกใช้เป็นคำสั่ง SELECT ทุกอย่างดูดี: DECLARE @RunDetailID INT = 448 DECLARE @JobDetailID INT SELECT @JobDetailID = [JobDetailID] FROM [RunDetails] WHERE [RunDetailID] = @RunDetailID SELECT [OrderedRecords].[NewSeq9], RIGHT([OrderedRecords].[NewSeq9], 4) FROM ( SELECT [Records].*, [Records].[SortField] + RIGHT('0000' + CAST(ROW_NUMBER() OVER(PARTITION BY [Records].[SortField] ORDER BY [Records].[RunDetailID], [Records].[SortField], [Records].[PieceID]) AS VARCHAR), 4) NewSeq9 …

6
เซิร์ฟเวอร์ที่ลงทะเบียน SSMS พร้อมเจตนาการใช้งานแบบอ่านอย่างเดียว
เรากำลังดำเนินการทดสอบ SQL Server 2014 POC กับ AlwaysOn และหนึ่งในผู้ใช้ถามเกี่ยวกับการบันทึกการกำหนดค่าของ SSMS ด้วยเจตนาแบบอ่านอย่างเดียวโดยใช้เซิร์ฟเวอร์ที่ลงทะเบียนในกลุ่มเซิร์ฟเวอร์ท้องถิ่น วิธีนี้พวกเขาไม่จำเป็นต้องพิมพ์ชื่อนามแฝงทุกครั้งที่พวกเขาต้องการเข้าถึงReadOnly replica น่าเสียดายที่ไม่มีตัวเลือกภายในเซิร์ฟเวอร์ที่ลงทะเบียนเพื่อเพิ่มตัวเลือก ApplicationIntent ซึ่งแตกต่างจากนักสำรวจวัตถุปกติ ฉันเจอบทความนี้จาก Microsoft เกี่ยวกับการเปลี่ยนสตริงการเชื่อมต่อใน RegSrvr.xml https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups ฉันลองใช้คำแนะนำของพวกเขาและมันไม่ได้เชื่อมต่อกับโหนดจำลองที่ถูกต้องเมื่อเชื่อมต่อผ่านเซิร์ฟเวอร์ท้องถิ่นในเซิร์ฟเวอร์ที่ลงทะเบียน อ่านได้อย่างเดียวตัวเลือกที่ทำงานได้ดีจากวัตถุสำรวจเมื่อใช้ตัวเลือกในหน้าต่างการเชื่อมต่อ> พารามิเตอร์การเชื่อมต่อเพิ่มเติม แต่จะไม่บันทึกการเปลี่ยนแปลงที่เกิดขึ้นกับการเชื่อมต่อ ไม่มีใครรู้วิธีแก้ปัญหาทางเลือกใด ๆ ในการบันทึกการกำหนดค่าด้วยคุณสมบัติการอ่านอย่างเดียวกับ SSMS ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของ.

2
รับสถิติการสืบค้นที่ทำงานช้า
แอปพลิเคชันฐานข้อมูลของฉันเรียกใช้แบบสอบถามที่แตกต่างกันมากมาย ฉันได้ตั้งไว้log_min_duration_statementที่ 1,000 แต่การสืบค้นที่บันทึกไว้มีไม่ช้าเสมอส่วนใหญ่พวกเขาใช้เวลาเพียงไม่กี่มิลลิวินาที เป็นไปได้หรือไม่ที่จะได้รับสถิติของข้อความค้นหาทั้งหมดและบ่อยครั้งที่พวกเขาใช้เวลานานกว่า 1,000 มิลลิวินาที

1
SQL Server จะรับการล็อคเมื่อใด
รายการระดับการแยกใน SQL Server พบได้ที่นี่ระบุว่าการล็อกการเขียนที่ได้รับภายในธุรกรรมถูกเก็บไว้จนกว่าจะสิ้นสุดการทำธุรกรรม อย่างไรก็ตามมันไม่ได้พูดถึงอะไรเกี่ยวกับเวลาที่ได้รับล็อคเหล่านี้ การล็อกตามค่าเริ่มต้นได้มาเมื่อเริ่มต้นธุรกรรมหรือเมื่อจำเป็น หากหลังเป็นจริงจึงเป็นประโยชน์ในการทำธุรกรรมขนาดใหญ่เพื่อดำเนินการเขียนให้ช้าที่สุดเพื่อลดระยะเวลาที่ล็อค X ไว้หรือไม่

1
ลบสตริงหลังจากอักขระเฉพาะที่สองเกิดขึ้นจากซ้าย
ฉันมีค่าประเภทนี้ในคอลัมน์ตาราง 154646@8@486 45465@6464@654 เป็นต้น ฉันจะลบทุกสิ่งหลังจากอักขระตัวที่สองได้อย่างไร ฉันต้องการที่จะแสดง 154646@8 45465@6464 ฉันสามารถทำได้เฉพาะสำหรับทุกคนที่ @ แต่ไม่ใช่สำหรับที่สอง SELECT REPLACE(LEFT('45@Tra@lala', CHARINDEX('@','45@Tra@lala')-1),'_',' ') ส่งคืน45แต่ไม่ใช่45 @ Tra ขอบคุณ :-)
10 sql-server 

2
ฟิลด์“ นอกแถว” ถูกอ่านเมื่อใช้ดัชนีกลุ่มหรือไม่
ฉันรู้ว่าเมื่อVARCHAR(MAX)/NVARCHAR(MAX)มีการใช้คอลัมน์ข้อมูลจะถูกเก็บไว้out of the row- แถวข้อมูลจะมีตัวชี้ไปยังตำแหน่งอื่นที่จัดเก็บ 'ค่ามาก' ฉันมีคำถามต่อไปนี้: อยู่ในแต่ละเขตข้อมูลที่เก็บไว้out of the rowหรือเพียงmaxคน? หากคุณกำลังใช้clustered indexตารางเพื่ออ่านระเบียนทั้งหมดเขตข้อมูลที่เก็บอยู่นอกแถวจะถูกอ่านด้วยหรือไม่ VARCHAR (MAX) หรือ NVARCHAR (MAX) ถือเป็น 'ประเภทค่าขนาดใหญ่' ประเภทค่าขนาดใหญ่มักจะเก็บไว้ที่ 'ออกจากแถว' มันหมายความว่า ...

2
วิธีการกำหนดค่าใช้จ่าย / ผลประโยชน์ของการเพิ่มดัชนี?
ตามที่Craig Ringer : แม้ว่าโดยทั่วไปจะเป็นความคิดที่ดีที่จะสร้างดัชนีใน (หรือรวมถึง) คอลัมน์คีย์ต่างประเทศอ้างอิงของคุณ แต่ก็ไม่จำเป็น แต่ละดัชนีคุณเพิ่มช้า DML การดำเนินงานลดลงเล็กน้อยเพื่อให้คุณจ่ายค่าใช้จ่ายการปฏิบัติงานในทุกINSERT, หรือUPDATE DELETEหากดัชนีนั้นไม่ค่อยได้ใช้อาจไม่คุ้มค่า คุณจะทราบได้อย่างไรว่าผลประโยชน์ของการเพิ่มดัชนีเกินกว่าราคาหรือไม่ คุณโปรไฟล์หน่วยทดสอบก่อน / หลังเพิ่มดัชนีและตรวจสอบเพื่อเพิ่มประสิทธิภาพโดยรวมหรือไม่? หรือมีวิธีที่ดีกว่า

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