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

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

5
ทำไมฉันจะไม่ใช้ตัวเลือก SQL Server“ ปรับให้เหมาะสมสำหรับปริมาณงานเฉพาะกิจ”?
ฉันได้อ่านบทความที่ยอดเยี่ยมเกี่ยวกับการแคชแผน SQL Server โดย Kimberly Tripp เช่นนี้: http://www.sqlskills.com/blogs/kimberly/plan-cache-and-optimizing-for-adhoc-workloads/ ทำไมถึงมีตัวเลือกในการ "เพิ่มประสิทธิภาพสำหรับปริมาณงานแบบเฉพาะกิจ"? สิ่งนี้ไม่ควรเกิดขึ้นหรือ ไม่ว่านักพัฒนาจะใช้ ad-hoc SQL หรือไม่ทำไมคุณไม่เปิดใช้งานตัวเลือกนี้ในทุกอินสแตนซ์ที่รองรับ (SQL 2008+) ซึ่งจะช่วยลดการขยายตัวของแคช?

6
ความหมายของประสิทธิภาพของขนาด MySQL VARCHAR
มีความแตกต่างของประสิทธิภาพใน MySQL ระหว่างขนาด varchar หรือไม่ ยกตัวอย่างเช่นและvarchar(25) varchar(64000)ถ้าไม่มีมีเหตุผลที่จะไม่ประกาศ varchars ทั้งหมดที่มีขนาดสูงสุดเพียงเพื่อให้แน่ใจว่าคุณไม่ได้ออกจากห้อง?

4
การสืบค้นแต่ละรายการเร็วกว่าการเข้าร่วมหรือไม่
คำถามแนวคิด: แบบสอบถามแต่ละรายการเร็วกว่าการเข้าร่วมหรือ: ฉันควรพยายามบีบข้อมูลทุกครั้งที่ฉันต้องการในฝั่งไคลเอ็นต์ให้เป็นคำสั่ง SELECT หนึ่งคำหรือใช้ให้มากที่สุดเท่าที่จะสะดวก? TL : DR : หากคิวรีที่เข้าร่วมของฉันใช้เวลานานกว่ารันคิวรีแต่ละรายการนี่เป็นความผิดของฉันหรือเป็นสิ่งที่คาดหวัง ก่อนอื่นฉันไม่ค่อยเข้าใจฐานข้อมูลมากนักดังนั้นอาจเป็นเพียงฉัน แต่ฉันสังเกตว่าเมื่อฉันต้องรับข้อมูลจากหลาย ๆ ตารางมันเร็วกว่าที่จะได้รับข้อมูลนี้จากการสืบค้นหลายรายการในตารางแต่ละรายการ มีการรวม Inner ง่ายๆ) และแก้ไขข้อมูลร่วมกันบนฝั่งไคลเอ็นต์ที่พยายามเขียนแบบสอบถามแบบซับซ้อน (ซับซ้อน) ที่ฉันสามารถรับข้อมูลทั้งหมดในแบบสอบถามเดียว ฉันพยายามใส่ตัวอย่างง่ายๆอย่างหนึ่งไว้ด้วยกัน: ซอ Fiddle การตั้งค่าสคีมา : CREATE TABLE MASTER ( ID INT NOT NULL , NAME VARCHAR2(42 CHAR) NOT NULL , CONSTRAINT PK_MASTER PRIMARY KEY (ID) ); CREATE TABLE DATA ( …

2
เมื่อต้องการอัปเดตสถิติ
ฉันได้รับแผนการบำรุงรักษาที่ได้รับสิ่งต่อไปนี้: ล้างข้อมูลเก่า ตรวจสอบความสมบูรณ์ของฐานข้อมูล ดำเนินการสำรองฐานข้อมูลและบันทึกธุรกรรม จัดระเบียบดัชนีของเราใหม่ อัพเดทสถิติ ลบการสำรองข้อมูลเก่าและไฟล์ Maintenance Plan จากแผนการบำรุงรักษา 23 นาทีการอัปเดตสถิติใช้เวลา 13 นาที ในช่วงเวลา 13 นาทีนี้การเข้าถึงฐานข้อมูลถูกปิดกั้น (หรืออย่างน้อยการจำลองแบบจากฐานข้อมูลนี้ไปยังผู้อื่นของเราจะถูกหยุดชั่วคราว) คำถามของฉันคือ: เราควรอัปเดตสถิติเมื่อใดและเพราะเหตุใด ดูเหมือนว่าสิ่งที่เราควรทำน้อยกว่าทุกวัน ฉันพยายามที่จะพาเราออกจาก "เพียงเพราะ" ความตั้งใจของการบำรุงรักษาที่ไม่จำเป็น

5
ซ้อนกันดูการออกแบบฐานข้อมูลที่ดี?
ฉันได้อ่านนานมาแล้ว หนังสือระบุว่าเราไม่ควรอนุญาตให้มีมุมมองแบบซ้อนใน SQL Server ฉันไม่แน่ใจว่าทำไมเราไม่สามารถทำเช่นนั้นหรือฉันอาจจำคำสั่งที่ไม่ถูกต้อง นักเรียน SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 ครู SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = …

5
Autovacuum เชิงรุกบน PostgreSQL
ฉันกำลังพยายามให้ PostgreSQL ทำการดูดฐานข้อมูลของฉันโดยอัตโนมัติ ฉันได้กำหนดค่าสูญญากาศอัตโนมัติดังนี้: autovacuum_vacuum_cost_delay = 0 # ปิดสูญญากาศที่ใช้ต้นทุน autovacuum_vacuum_cost_limit = 10,000 # ค่าสูงสุด autovacuum_vacuum_threshold = 50 # ค่าเริ่มต้น autovacuum_vacuum_scale_factor = 0.2 # ค่าเริ่มต้น ฉันสังเกตว่าสูญญากาศอัตโนมัติจะเริ่มขึ้นเฉพาะเมื่อฐานข้อมูลไม่ได้โหลดดังนั้นฉันจึงเข้าสู่สถานการณ์ที่มีสิ่งอันดับที่ตายแล้วมากกว่าสิ่งอันดับสด ดูตัวอย่างภาพหน้าจอที่แนบมา หนึ่งในตารางมี 23 tuples สด แต่ 16845 tuples ตายรอสูญญากาศ นั่นมันบ้า! Auto vacuum kicks เมื่อการทดสอบเสร็จสิ้นและเซิร์ฟเวอร์ฐานข้อมูลไม่ได้ใช้งานซึ่งไม่ใช่สิ่งที่ฉันต้องการเพราะฉันต้องการให้สูญญากาศอัตโนมัติเตะเมื่อใดก็ตามที่จำนวนของ tuples ที่ตายเกินกว่า 20% tuples สด + 50 เนื่องจากฐานข้อมูล การกำหนดค่า สูญญากาศอัตโนมัติเมื่อเซิร์ฟเวอร์ไม่ได้ใช้งานไม่มีประโยชน์สำหรับฉันเนื่องจากเซิร์ฟเวอร์ที่ใช้งานจริงคาดว่าจะมีการอัปเดต 1000 …

3
ปริมาณการใช้“ หน่วยความจำเซิร์ฟเวอร์โดยรวม” ของ SQL Server หยุดนิ่งเป็นเดือนโดยมี 64GB + มากกว่านั้น
ฉันพบปัญหาแปลกที่ SQL Server 2016 Standard Edition 64- บิตดูเหมือนว่าได้ปิดตัวเองที่ครึ่งหนึ่งของหน่วยความจำทั้งหมดที่จัดสรรให้อย่างแม่นยำ (64GB 128GB) ผลลัพธ์ของ@@VERSIONคือ: Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 22 ธันวาคม 2017 11:25:00 ลิขสิทธิ์ (c) Microsoft Corporation Standard Edition (64 บิต) บน Windows Server 2012 R2 Datacenter 6.3 ( รุ่น 9600:) (Hypervisor) ผลลัพธ์ของsys.dm_os_process_memoryคือ: เมื่อฉันแบบสอบถามsys.dm_os_performance_countersผมเห็นว่าTarget Server Memory (KB)ที่131072000และเป็นเพียงภายใต้ครึ่งหนึ่งของที่ที่Total Server Memory …

2
วิธีเพิ่มประสิทธิภาพคิวรีที่ทำงานช้าลงบนลูปซ้อน (Inner Join)
TL; DR เนื่องจากคำถามนี้ยังคงได้รับการดูฉันจะสรุปได้ที่นี่เพื่อให้ผู้มาใหม่ไม่ต้องทนทุกข์กับประวัติศาสตร์: JOIN table t ON t.member = @value1 OR t.member = @value2 -- this is slow as hell JOIN table t ON t.member = COALESCE(@value1, @value2) -- this is blazing fast -- Note that here if @value1 has a value, @value2 is NULL, and vice versa ฉันรู้ว่านี่อาจไม่ใช่ปัญหาของทุกคน แต่การเน้นความไวของอนุประโยค …

5
คุณปรับแต่ง MySQL สำหรับภาระงาน InnoDB จำนวนมากได้อย่างไร
สมมติว่าระบบ OLTP ที่ใช้งานจริงนั้นมีตาราง InnoDB เป็นส่วนใหญ่ อาการที่พบบ่อยของระบบผิดพลาด / กำหนดค่าผิดพลาดคืออะไร? พารามิเตอร์การกำหนดค่าใดที่คุณมักเปลี่ยนจากค่าเริ่มต้น คุณจะสังเกตเห็นคอขวดที่อาจเกิดขึ้นก่อนที่จะมีปัญหาได้อย่างไร คุณรู้จักและแก้ไขปัญหาที่ใช้งานอยู่ได้อย่างไร เกร็ดเล็กเกร็ดน้อยที่มีรายละเอียดเกี่ยวกับstatusตัวแปรเฉพาะและการวินิจฉัยจะได้รับการชื่นชม

2
มัลติคอร์และประสิทธิภาพ MySQL
ความสำคัญของ RAM เป็นความจริงที่สร้างขึ้นมา แต่มีเนื้อหาน้อยมากเกี่ยวกับความสำคัญของคอร์และมัลติเธรดเมื่อพูดถึงการใช้งาน CPU โดย MySQL ฉันกำลังพูดถึงความแตกต่างของการใช้งาน MySQL บน 4cores vs 6cores เทียบกับ 8cores เป็นต้น เอนจินการเก็บข้อมูลที่ต่างกันใช้ CPU ต่างกันหรือไม่

6
ใน MySQL ลำดับของคอลัมน์ในส่วนคำสั่ง WHERE มีผลต่อประสิทธิภาพการค้นหาหรือไม่
ฉันมีปัญหาเรื่องประสิทธิภาพของการสืบค้นฐานข้อมูลที่มีชุดผลลัพธ์ที่เป็นไปได้จำนวนมาก แบบสอบถามในคำถามฉันมีสามANDในอนุประโยค คำสั่งของอนุประโยคมีความสำคัญหรือไม่? เช่นในถ้าฉันใส่ข้อ ASI_EVENT_TIME ก่อน (เนื่องจากจะลบผลลัพธ์ส่วนใหญ่ออกจากส่วนคำสั่งใด ๆ จะปรับปรุงเวลาทำงานของแบบสอบถามหรือไม่ ค้นหา: SELECT DISTINCT activity_seismo_info.* FROM `activity_seismo_info` WHERE activity_seismo_info.ASI_ACTIVITY_ID IS NOT NULL AND activity_seismo_info.ASI_SEISMO_ID IN (43,44,...,259) AND ( activity_seismo_info.ASI_EVENT_TIME>='2011-03-10 00:00:00' AND activity_seismo_info.ASI_EVENT_TIME<='2011-03-17 23:59:59' ) ORDER BY activity_seismo_info.ASI_EVENT_TIME DESC อธิบายคำค้นหา: +----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+ | id | select_type | table | type | possible_keys | key …

2
การปรับปรุงประสิทธิภาพการอัปเดตเป็นกลุ่มใน PostgreSQL
ใช้ PG 9.1 บน Ubuntu 12.04 ขณะนี้เราใช้เวลาถึง 24 ชั่วโมงในการเรียกใช้ชุดคำสั่ง UPDATE จำนวนมากบนฐานข้อมูลซึ่งเป็นรูปแบบ: UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (เราแค่เขียนทับฟิลด์ของวัตถุที่ระบุด้วย ID) ค่ามาจากแหล่งข้อมูลภายนอก (ยังไม่ได้อยู่ในฐานข้อมูลในตาราง) ตารางมีดัชนีไม่กี่ข้อและไม่มีข้อ จำกัด ของรหัสต่างประเทศ ไม่มีการกระทำใด ๆ จนกว่าจะสิ้นสุด ใช้เวลา 2 ชั่วโมงในการนำเข้าpg_dumpฐานข้อมูลทั้งหมด ดูเหมือนว่าพื้นฐานนี้เราควรตั้งเป้าหมายอย่างสมเหตุสมผล ขาดการผลิตโปรแกรมที่กำหนดเองซึ่งสร้างชุดข้อมูลสำหรับ PostgreSQL เพื่อนำเข้าอีกครั้งมีอะไรที่เราสามารถทำได้เพื่อให้ประสิทธิภาพการอัพเดทจำนวนมากใกล้เคียงกับการนำเข้าหรือไม่ (นี่คือพื้นที่ที่เราเชื่อว่าต้นไม้ที่ผสานโครงสร้างบันทึกการจัดการดี แต่เราสงสัยว่ามีอะไรที่เราสามารถทำได้ภายใน PostgreSQL) ความคิดบางอย่าง: วางดัชนีที่ไม่ใช่ ID ทั้งหมดและสร้างใหม่ในภายหลังหรือไม่ การเพิ่ม …

5
วิธีการเร่งความเร็วการลบอย่างมากจาก <table> โดยไม่มีส่วนคำสั่ง
ใช้ SQL Server 2005 ฉันกำลังทำการลบขนาดใหญ่จากที่ไม่มีส่วนคำสั่ง โดยทั่วไปแล้วเทียบเท่ากับคำสั่ง TRUNCATE TABLE - ยกเว้นฉันไม่ได้รับอนุญาตให้ใช้ TRUNCATE ปัญหาคือตารางมีขนาดใหญ่มาก - 10 ล้านแถวและใช้เวลากว่าหนึ่งชั่วโมงกว่าจะเสร็จสมบูรณ์ มีวิธีทำให้เร็วขึ้นโดยไม่: ใช้ตัดทอน ปิดการใช้งานหรือวางดัชนี? t-log มีอยู่ในดิสก์ที่แยกต่างหาก ข้อเสนอแนะใด ๆ ยินดีต้อนรับ!

5
เมื่อแบบสอบถาม SQL ที่เร็วกว่าเดิมเริ่มทำงานช้าฉันจะค้นหาแหล่งที่มาของปัญหาได้ที่ไหน
พื้นหลัง ฉันมีแบบสอบถามที่ใช้กับ SQL Server 2008 R2 ที่รวมและ / หรือซ้ายเข้าร่วมกับ "ตาราง" ที่แตกต่างกันประมาณ 12 รายการ ฐานข้อมูลมีขนาดค่อนข้างใหญ่โดยมีตารางมากกว่า 50 ล้านแถวและประมาณ 300 ตารางที่แตกต่างกัน สำหรับ บริษัท ขนาดใหญ่ที่มีคลังสินค้า 10 แห่งทั่วประเทศ คลังสินค้าทั้งหมดอ่านและเขียนไปยังฐานข้อมูล ดังนั้นมันจึงค่อนข้างใหญ่และค่อนข้างยุ่ง ข้อความค้นหาที่ฉันพบมีลักษณะดังนี้: select t1.something, t2.something, etc. from Table1 t1 inner join Table2 t2 on t1.id = t2.t1id left outer join (select * from table 3) t3 …

2
ถ้ามีอยู่ใช้เวลานานกว่าคำสั่ง select ฝังตัว
เมื่อฉันเรียกใช้รหัสต่อไปนี้มันใช้เวลา 22.5 นาทีและ 106 ล้านอ่าน อย่างไรก็ตามถ้าฉันเรียกใช้เพียงคำสั่งเลือกภายในด้วยตัวเองมันใช้เวลาเพียง 15 วินาทีและอ่านได้ 264k ในฐานะที่เป็นข้อความด้านแบบสอบถามแบบใช้เลือกข้อมูลจะไม่ส่งกลับระเบียน ความคิดใดที่ว่าทำไมIF EXISTSมันถึงทำให้มันใช้งานได้นานขึ้นและอ่านได้มากขึ้น? ฉันเปลี่ยนคำสั่ง select เป็นสิ่งที่ต้องทำSELECT TOP 1 [dlc].[id]และฉันก็ฆ่ามันหลังจาก 2 นาที ในฐานะที่เป็นแก้ไขชั่วคราวฉันมีการเปลี่ยนแปลงจะทำนับ (*) @cntและกำหนดค่าที่ให้กับตัวแปร จากนั้นจะมีIF 0 &lt;&gt; @cntคำสั่ง แต่ฉันคิดว่าEXISTSจะดีกว่าเพราะถ้ามีการบันทึกกลับมาในคำสั่ง select มันจะหยุดทำการสแกน / ค้นหาเมื่อพบอย่างน้อยหนึ่งระเบียนในขณะที่count(*)จะทำการสืบค้นแบบเต็ม ฉันพลาดอะไรไป IF EXISTS (SELECT [dlc].[ID] FROM TableDLC [dlc] JOIN TableD [d] ON [d].[ID] = [dlc].[ID] JOIN TableC [c] …

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