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

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

2
มีวิธีการกำหนดไฟล์ที่แน่นอนที่มีหน่วยการจัดสรรในกลุ่มไฟล์ของหลายไฟล์หรือไม่?
ฉันหวังว่าจะได้รับมุมมองที่ละเอียดว่าไฟล์ฐานข้อมูลใดมีหน่วยการจัดสรรใดสำหรับ HoBT ต่างๆ (ทั้งที่อยู่ในแนวเดียวกันและไม่ได้อยู่ในแนวเดียวกัน) ในฐานข้อมูล แบบสอบถามที่ฉันใช้อยู่เสมอ (ดูด้านล่าง) ให้บริการฉันได้ดีจนกระทั่งเราเริ่มสร้างไฟล์ข้อมูลหลายไฟล์ต่อกลุ่มไฟล์และฉันสามารถที่จะหาวิธีที่จะได้รับรายละเอียดเป็นระดับกลุ่มไฟล์ select SchemaName = sh.name, TableName = t.name, IndexName = i.name, PartitionNumber = p.partition_number, IndexID = i.index_id, IndexDataspaceID = i.data_space_id, AllocUnitDataspaceID = au.data_space_id, PartitionRows = p.rows from sys.allocation_units au join sys.partitions p on au.container_id = p.partition_id join sys.indexes i on i.object_id = p.object_id …

1
ฉันจะอัพเกรดฐานข้อมูล postgres AWS RDS เวอร์ชันหลักได้อย่างไร
เช้านี้ฉันมีส่วนร่วมในการอัพเกรดฐานข้อมูล PostgreSQL บน AWS RDS เราต้องการย้ายจากรุ่น 9.3.3 ไปเป็นรุ่น 9.4.4 เราได้ "ทดสอบ" การอัปเกรดบนฐานข้อมูลการแสดงละคร แต่ฐานข้อมูลการแสดงละครมีขนาดเล็กกว่ามากและไม่ใช้ Multi-AZ ปรากฎว่าการทดสอบนี้ค่อนข้างไม่เพียงพอ ฐานข้อมูลการผลิตของเราใช้ Multi-AZ เราได้ทำการอัปเกรดรุ่นรองในอดีตและในกรณีเหล่านั้น RDS จะอัปเกรดสแตนด์บายก่อนแล้วจึงเลื่อนระดับเป็นหลัก ดังนั้นการหยุดทำงานเพียงครั้งเดียวที่เกิดขึ้นคือ ~ 60 วินาทีในระหว่างการล้มเหลว เราสันนิษฐานว่าสิ่งเดียวกันจะเกิดขึ้นสำหรับการอัปเกรดเวอร์ชันหลัก แต่โอ้ว่าเราผิดอย่างไร รายละเอียดบางอย่างเกี่ยวกับการตั้งค่าของเรา: db.m3.large IOPS ที่จัดสรร (SSD) ที่เก็บข้อมูล 300 GB ซึ่งมีการใช้งาน 139 GB เรามีการอัปเกรด RDS OS ที่โดดเด่นเราต้องการแบทช์ด้วยการอัพเกรดนี้เพื่อลดเวลาหยุดทำงาน นี่คือเหตุการณ์ RDS ที่ถูกบันทึกไว้ในขณะที่เราทำการอัพเกรด: ซีพียูฐานข้อมูลถูกขยายให้ใหญ่สุดระหว่างประมาณ 08:44 ถึง 10:27 เวลานี้ดูเหมือนว่าจะถูกครอบครองโดย RDS …

2
วิธีรับการแทรก SQL และ / หรือการปรับปรุงเพื่อไม่ล็อคทั้งตารางใน MS SQL Server
มือใหม่ในฐานข้อมูลทำงานมากดังนั้นขอขอบคุณที่กรุณาอดทนรอด้วยคำถามพื้นฐาน ฉันใช้ SQL Server 2014 บนเครื่องของฉันและฉันมีตารางเล็ก ๆ และแอปพลิเคชันไคลเอนต์ขั้นพื้นฐานเพื่อทดสอบวิธีการต่าง ๆ ด้วย ฉันได้สิ่งที่ดูเหมือนจะล็อคตารางระหว่างทั้งสองINSERT INTOและUPDATEงบ ไคลเอนต์เป็นแอปพลิเคชัน ASP.NET ด้วยรหัสต่อไปนี้: OleDbConnection cn = new OleDbConnection("Provider=SQLNCLI11; server=localhost\\SQLEXPRESS; Database=<my db>; user id=<my uid>; password=<my pwd>"); cn.Open(); OleDbTransaction tn = cn.BeginTransaction(); OleDbCommand cmd = new OleDbCommand("INSERT INTO LAYOUTSv2 (LAYOUTS_name_t, LAYOUTS_enabled_b, LAYOUTS_data_m) VALUES ('name', '-1', 'data')", cn, tn); cmd.ExecuteNonQuery(); …

4
ในกรณีใดธุรกรรมสามารถกระทำจากภายในบล็อกจับเมื่อ XACT_ABORT ตั้งเป็น ON?
ฉันได้อ่านเกี่ยวกับ MSDN และTRY...CATCHXACT_STATE มันมีตัวอย่างต่อไปนี้ที่ใช้XACT_STATEในCATCHบล็อกของการTRY…CATCHสร้างเพื่อตรวจสอบว่าจะกระทำหรือย้อนกลับการทำธุรกรรม: USE AdventureWorks2012; GO -- SET XACT_ABORT ON will render the transaction uncommittable -- when the constraint violation occurs. SET XACT_ABORT ON; BEGIN TRY BEGIN TRANSACTION; -- A FOREIGN KEY constraint exists on this table. This -- statement will generate a constraint violation error. DELETE FROM Production.Product …

2
ทันใดนั้น Mongodb การเชื่อมต่อ / คิวสูง db หยุดตอบสนอง
ปัญหา เรามีปัญหาแปลก ๆ ในการติดตั้ง MongoDB ของเรา บางครั้งเราได้รับการเชื่อมต่อสูงสุดและคิวสูงและกระบวนการ mongodb หยุดตอบสนองถ้าเราปล่อยให้คิวและการเชื่อมต่อเพิ่มขึ้น เราต้องเริ่มต้นใหม่เช่นใช้SIGKILLกับhtop ดูเหมือนว่ามีการ จำกัด การกำหนดค่าระบบ / mongodb ที่ป้องกัน mongodb จากการดำเนินการเนื่องจากทรัพยากรฮาร์ดแวร์ตกลง รุ่นของปัญหานี้เกิดขึ้นแบบสแตนด์อะโลนแล้วตั้งค่าแบบจำลองบนเซิร์ฟเวอร์ที่ใช้งานจริง รายละเอียดข้างหน้า เกี่ยวกับสภาพแวดล้อมของซอฟต์แวร์ นี่เป็นอินสแตนซ์ mongodb แบบสแตนด์อโลน (ไม่ใช่ชุดชาร์ดหรือแบบจำลอง) มันทำงานบนเครื่องเฉพาะและถูกสอบถามโดยเครื่องอื่น ฉันใช้ mongodb-linux-x86_64-2.6.12 ภายใต้ Debian 7.7 เครื่องจักรที่สอบถาม Mongo ใช้ Django == 1.7.4, Mongoengine = 0.10.1 ด้วย pymongo == 2.8, nginx 1.6.2 และ gunicorn 19.1.1 ในไฟล์ …

1
เหตุใด SQL Server จึงปฏิเสธที่จะอัปเดตสถิติเหล่านี้เป็นอย่างอื่นนอกจากสแกนแบบเต็ม
ฉันสังเกตเห็นการดำเนินการสถิติการอัปเดตอัตโนมัติ (20 นาที +) ที่ค่อนข้างใช้เวลานานในการสร้างคลังข้อมูลรายวัน ตารางที่เกี่ยวข้องคือ CREATE TABLE [dbo].[factWebAnalytics]( [WebAnalyticsId] [bigint] IDENTITY(1,1) NOT NULL, [MarketKey] [int] NOT NULL CONSTRAINT [DF_factWebAnalytics_MarketKey] DEFAULT ((-1)), /*Other columns removed*/ CONSTRAINT [PK_factWebAnalytics] PRIMARY KEY CLUSTERED ( [MarketKey] ASC, [WebAnalyticsId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = …

2
ทำไมคำขอ Batch ของฉันเพิ่มขึ้นเมื่อทำการสำรองข้อมูลต่าง
ฉันเริ่มทำการติดตามระยะยาวของกิจกรรมต่าง ๆ ใน SQL Server 2012 ของเราและฉันสังเกตเห็นการเพิ่มของคำขอ Batch ในระหว่างการสำรองข้อมูลที่เพิ่มขึ้นของเรา เพื่อให้ความคิดปกติวันต่อวันเราอยู่ที่ประมาณ 10-20 ชุดคำขอต่อวินาที แต่ในช่วงเวลาที่การสำรองข้อมูลที่แตกต่างกันของเรามันกระโดดไปที่ 100-130 ต่อวินาที ฉันรู้ว่ามันไม่มาก แต่ก็ทำให้ฉันอยากรู้ว่าสิ่งที่เกิดขึ้นนั้นเพิ่มขึ้น 10 เท่า ไม่แน่ใจว่าข้อมูลใดที่คุณอาจต้องใช้เพื่อช่วยแก้ไขปัญหานี้

1
ฉันจะทำลาย XML ของเหตุการณ์ขยายนี้ได้เร็วที่สุดเท่าที่จะเป็นไปได้อย่างไร
ฉันสร้างเซสชันเพิ่มเติมในเหตุการณ์ใน SQL Server 2008 R2 เซสชั่นจะทำงานและรวบรวมกิจกรรมตามที่เกิดขึ้นเช่นเดียวกับที่คุณคาดหวัง ถ้าฉันฉีก xml เมื่อมีเหตุการณ์ค่อนข้างน้อยประสิทธิภาพเป็นที่ยอมรับได้ เมื่อฉันมีเหตุการณ์นับพันใช้เวลานานในการฉีก xml ฉันรู้ว่าฉันกำลังทำสิ่งผิดปกติฉันไม่มีความรู้เพียงพอเกี่ยวกับ internals ของเอ็นจิน XML เพื่อทำความเข้าใจกับสิ่งที่ นี่คือคำจำกัดความของเซสชันเพิ่มเติมของฉัน: IF EXISTS ( SELECT 1 FROM sys.server_event_sessions dxs WHERE dxs.name = 'queries' ) BEGIN IF EXISTS ( SELECT 1 FROM sys.dm_xe_sessions dxs WHERE dxs.name = 'queries' ) BEGIN ALTER EVENT SESSION queries ON …

2
ขีดกลางในชื่อคอมพิวเตอร์ของฉันทำให้เกิดข้อผิดพลาด T-SQL
ฉันเป็นนักพัฒนาไม่ใช่ DBA (ซึ่งกำลังแสดงอยู่ฉันกลัว) ฉันพยายามเรียกใช้ Report Builder 3.0 ด้วย SQL Server 2014 Express บนคอมพิวเตอร์ที่บ้านของฉัน (ชื่อJohn-PC) และไม่สามารถเรียกใช้รายงานของฉัน ฉันตั้งใจสร้างคำสั่งผสมผู้ใช้ / การเข้าสู่ระบบของและuser = John-PC login = John-PC\Johnเมื่อฉันพยายามลบรายการด้วย: Drop Login John-PC\John ฉันได้รับข้อผิดพลาด: ไวยากรณ์ไม่ถูกต้องใกล้กับ '-' ฉันคิดว่าปัญหาคือเครื่องหมายขีดคั่นในชื่อคอมพิวเตอร์ของฉัน มีวิธีแก้ไขข้อผิดพลาดทางไวยากรณ์หรือไม่ มีวิธีอื่นในการเปลี่ยนหรือลบผู้ใช้ (ฉันลองดรอปจากsys.server_principalsแต่ได้รับข้อผิดพลาดที่ไม่สามารถทำการเปลี่ยนแปลงเฉพาะกิจได้) ฉันสามารถให้ชื่อผู้ใช้ / ชื่อเข้าสู่ระบบใหม่กับ Report Builder ได้หรือไม่ หากไม่มีการข้างต้นฉันสามารถเปลี่ยนชื่อคอมพิวเตอร์เป็นJohn_PCหรือจะสร้างโฮสต์ของปัญหาอื่น ๆ ที่ฉันไม่สามารถจินตนาการได้หรือไม่

2
วิธีการติดตั้งอัลกอริธึมตาม / UDF
ฉันมีอัลกอริทึมที่ฉันต้องเรียกใช้กับทุกแถวในตารางที่มี 800K แถวและ 38 คอลัมน์ อัลกอริทึมถูกนำมาใช้ใน VBA และทำการคำนวณทางคณิตศาสตร์โดยใช้ค่าจากบางคอลัมน์เพื่อจัดการคอลัมน์อื่น ปัจจุบันฉันใช้ Excel (ADO) เพื่อสอบถาม SQL และใช้ VBA กับเคอร์เซอร์ฝั่งไคลเอ็นต์เพื่อใช้อัลกอริทึมโดยวนซ้ำทุกแถว มันใช้งานได้ แต่ใช้เวลา 7 ชั่วโมงในการทำงาน รหัส VBA นั้นซับซ้อนพอที่จะทำการถอดรหัสเป็น T-SQL ได้เป็นจำนวนมาก ฉันได้อ่านเกี่ยวกับการรวม CLR และ UDF เป็นเส้นทางที่เป็นไปได้ ฉันคิดเกี่ยวกับการใส่รหัส VBA ในงานสคริปต์ SSIS เพื่อเข้าใกล้ฐานข้อมูล แต่แน่ใจว่ามีผู้เชี่ยวชาญด้านวิธีการสำหรับปัญหาด้านประสิทธิภาพประเภทนี้อยู่ เป็นการดีที่ฉันจะสามารถเรียกใช้อัลกอริทึมกับแถวมากที่สุด (ทั้งหมด?) เป็นไปได้ในวิธีการตั้งค่าแบบขนาน ความช่วยเหลือใด ๆ ที่บอกล่วงหน้าถึงวิธีการรับประสิทธิภาพที่ดีที่สุดกับปัญหาประเภทนี้ --Edit ขอบคุณสำหรับความคิดเห็นฉันใช้ MS SQL 2014 Enterprise ต่อไปนี้เป็นรายละเอียดเพิ่มเติม: อัลกอริทึมค้นหารูปแบบลักษณะในข้อมูลอนุกรมเวลา …

2
ฉันจะทำให้ sp_BlitzIndex ของ Brent Ozar ทำงานบน Azure ได้อย่างไร
ฉันดาวน์โหลด SQL Server First Aid Kit จากเว็บไซต์ของ Brent Ozar เมื่อฉันพยายามเรียกใช้สคริปต์sp_BlitzIndexกับฐานข้อมูลหลักของฉันผ่าน Microsoft SQL Server จัดการ Studio ขณะที่เข้าสู่ระบบในฐานะผู้ดูแลระบบเซิร์ฟเวอร์ฐานข้อมูล Azure และฉันได้รับข้อผิดพลาดดังต่อไปนี้: ข่าวสารเกี่ยวกับ 262, ระดับ 14, สถานะ 18, กระบวนงาน sp_BlitzIndex, บรรทัด 18 สร้างสิทธิ์ในการสร้างกระบวนการปฏิเสธในฐานข้อมูล 'ต้นแบบ' ฉันสร้างขั้นตอนบนฐานข้อมูลอินสแตนซ์ที่ฉันต้องการทดสอบเรียบร้อยแล้ว เมื่อฉันดำเนินการตามขั้นตอนฉันพบข้อผิดพลาด: เกี่ยวกับข่าวสาร 50000 ระดับ 16 สถานะ 1 บรรทัด 1265 ชื่อวัตถุไม่ถูกต้อง 'mydatabase.sys.partitions' ต่อไปฉันพยายามที่จะฉลาดและเรียกใช้รหัสกระบวนงานที่เก็บไว้โดยตรงกับฐานข้อมูลหลักโดยไม่ต้องสร้างกระบวนงานที่เก็บไว้และได้รับข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 50000, ระดับ 15, สถานะ 1, บรรทัด …

1
MySQL มุ่งมั่นที่จะไม่เห็นข้อมูลเพื่อเลือกแบบสอบถาม
บริบท: เฟรมเวิร์กที่ใช้คือ Spring และเคียวรีทั้งหมดรันด้วย JdbcTemplate เซิร์ฟเวอร์ Mysql คือ 5.6.19 tableเป็นInnoDB tableและค่าเริ่มต้นเหมือนauto commitและระดับการแยกทำซ้ำอ่านเป็นชุด ปัญหา : Insertเกิดขึ้นภายในธุรกรรมและselectที่อ่านข้อมูลเดียวกันที่แทรกไว้ไม่เห็นข้อมูล selectวิ่งหลังจากinsertและหลังการทำธุรกรรมมีinsertcommited ฉันได้เปิดใช้งาน bin log รวมถึง log ทั่วไปใน mysql แล้ว บันทึกที่เกี่ยวข้องด้านล่าง ถังเข้าสู่ระบบ: SET TIMESTAMP=1438265764/*!*/; BEGIN /*!*/; # at 249935389 #150730 14:16:04 server id 1 end_log_pos 249935606 CRC32 0xa6aca292 Query thread_id=40 exec_time=0 error_code=0 SET TIMESTAMP=1438265764/*!*/; insert into …

2
การย้อนกลับของ SQL Server ทั้งสองนี้แตกต่างกันอย่างไร
ใน SQL Server 2008 R2 การย้อนกลับสองแบบนี้แตกต่างกันอย่างไร: เรียกใช้ALTERคำสั่งสักครู่แล้วกด 'ยกเลิกการดำเนินการ' ใช้เวลาสองสามนาทีในการย้อนกลับอย่างสมบูรณ์ เรียกใช้ALTERคำสั่งเดียวกันแต่ให้แน่ใจว่าLDFไฟล์นั้นไม่ใหญ่พอที่จะทำให้สำเร็จ เมื่อถึงLDFขีด จำกัด และไม่อนุญาตให้ 'autogrowth' การประมวลผลแบบสอบถามจะหยุดทันที (หรือย้อนกลับเกิดขึ้น) พร้อมกับข้อความแสดงข้อผิดพลาดนี้: The statement has been terminated. Msg 9002, Level 17, State 4, Line 1 The transaction log for database 'SampleDB' is full. To find out why space in the log cannot be reused, see …

1
รับเปอร์เซ็นไทล์ที่ 10 และ 90 จากลูกค้า
ฉันมีตารางที่มีลูกค้าและคะแนน (ขึ้นอยู่กับปัจจัยต่าง ๆ ที่ไม่เกี่ยวข้องในกรณีนี้ลูกค้าสามารถมีหลายคะแนน) ซึ่งมีลักษณะดังนี้: customer_id | score | score_giver_id ==================================== 1 | 100 | 1 1 | 102 | 1 1 | 101 | 1 1 | 140 | 1 2 | 131 | 3 1 | 44 | 1 3 | 223 | 1 3 | 1 | …

3
Backup internals - จะเกิดอะไรขึ้นเมื่องานสำรองทำงานในแง่ของการล็อคและค่าใช้จ่ายด้านประสิทธิภาพใน SQL Server
สำหรับ MySQL ฉันรู้ว่าฐานข้อมูลได้รับการสำรองข้อมูลแบบตารางต่อตารางในคำสั่ง SQL ผลลัพธ์นี้ในการล็อคและถ้าคุณอัปเดตคอลัมน์ในขณะที่สำรองข้อมูลคุณอาจพบปัญหาความสมบูรณ์ เพื่อความเข้าใจของฉันนี้ไม่ได้ใช้สำหรับ Microsoft SQL Server แต่ SQL Server จัดการกับสิ่งนี้ได้อย่างไร มีการตรึงภายในเพื่อให้ db สอดคล้องกันหรือไม่? นอกจากนี้ฉันได้ยินมาว่าการสำรองข้อมูลเป็นเธรดเดี่ยวซึ่งหมายความว่าใช้คอร์เดียวเท่านั้นโดยสมมติว่าคุณสำรองข้อมูลเป็นไฟล์เดียว นอกจากนี้สมมติว่าคุณมีเครื่องมัลติคอร์เช่น 16 คอร์หรืออย่างน้อยก็สำคัญมากกว่าหนึ่ง จากประสบการณ์ส่วนตัวของฉันฉันไม่เคยมีปัญหาเมื่อทำการสำรองข้อมูลไม่ล็อคหรือปัญหาค่าใช้จ่าย แต่ประสบการณ์ของฉันมี จำกัด นั่นเป็นเหตุผลที่ฉันแนะนำเสมอให้เปิดการบีบอัดข้อมูลสำรองในคุณสมบัติเซิร์ฟเวอร์ ดังนั้นจะเกิดอะไรขึ้นเมื่องานสำรองทำงาน และยังมีความแตกต่างอย่างมีนัยสำคัญสำหรับรุ่นที่แตกต่างกันอย่างไร เช่น 2008,2012 และ 2014 (ไม่ใช่ใบอนุญาต)

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