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

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

7
การออกแบบตารางแบบใดที่เหมาะกับประสิทธิภาพมากที่สุด
ฉันถูกขอให้สร้างบางสิ่งบางอย่างซึ่งติดตามค่าใช้จ่ายรายวันเพื่อรวบรวมในบัญชีและฉันกำลังพยายามหาสคีมาตารางฐานข้อมูลที่จะสนับสนุนสิ่งนี้ นี่คือสิ่งที่ฉันรู้ บริษัท มีบัญชีมากกว่า 2.5 ล้านบัญชี ในบรรดาเหล่านี้พวกเขาทำงานเฉลี่ย 200,000 ต่อเดือน (การเปลี่ยนแปลงที่มีระดับพนักงานซึ่งปัจจุบันอยู่ในระดับต่ำ) พวกเขามีประเภทค่าใช้จ่ายที่แตกต่างกัน 13 แบบที่พวกเขาต้องการติดตามและพวกเขาได้เตือนว่าพวกเขาอาจเพิ่มมากขึ้นในอนาคต พวกเขาต้องการค่าใช้จ่ายในการติดตามรายวัน ค่าใช้จ่ายจะไม่แยกระหว่างสินค้าคงคลังทั้งหมด พวกเขาจะแยกตาม # ของบัญชีที่ทำงานต่อเดือน (200,000) หรือผู้ใช้สามารถป้อนตัวระบุบัญชีเพื่อใช้ค่าใช้จ่ายกับกลุ่มบัญชีหรือพวกเขาสามารถระบุบัญชีที่จะใช้ค่าใช้จ่าย ความคิดแรกของฉันคือฐานข้อมูลปกติ: หมายเลขบัญชี วันที่ CostTypeId จำนวน ปัญหาของฉันคือสิ่งนี้ทำคณิตศาสตร์ ตารางนี้จะใหญ่ขึ้นอย่างรวดเร็ว สมมติว่ามีการคิดค่าใช้จ่ายทั้งหมด 13 ประเภทสำหรับบัญชีที่ทำงานทั้งหมดสำหรับเดือนปัจจุบันนั่น200k * 13 * N days in monthคือที่ ๆ ประมาณ 75-80 ล้านระเบียนต่อเดือนหรือใกล้เคียงกับหนึ่งพันล้านรายการต่อปี ความคิดที่สองของฉันคือการทำให้เป็นปกติเล็กน้อย หมายเลขบัญชี วันที่ ค่าใช้จ่ายทั้งหมด CostType1 CostType2 CostType3 CostType4 CostType5 …

2
สาเหตุของการสืบค้นที่ช้าเป็นครั้งคราว?
เรากำลังใช้งาน MySQL 5.1 บน Windows Server 2008 R2 เราทำการวิเคราะห์บางอย่างในฐานข้อมูลของเราล่าช้าและพบสิ่งรบกวนที่เราไม่สามารถอธิบายได้ เราเพิ่มรหัสเพื่อเข้าสู่ระบบเมื่อเรามีการสืบค้นที่ใช้เวลานาน (> 2000ms) ผลลัพธ์น่าประหลาดใจ (และอาจเป็นคำอธิบายสำหรับการหยุดชะงักของเรา) แบบสอบถามเป็นครั้งคราวซึ่งโดยปกติจะใช้เวลาน้อยมาก (<10ms) ใช้เวลาตั้งแต่ 4 ถึง 13 วินาที เพื่อความชัดเจนนี่คือข้อความค้นหาที่ทำงานอย่างต่อเนื่อง (หลาย ๆ ครั้งต่อวินาที) และไม่ได้รับผลกระทบจากเวลาในการค้นหาเหล่านี้ เราผ่านดัชนีของเราเพื่อค้นหาข้อผิดพลาดที่ชัดเจนและไม่มีโชคมาก ปรับปรุง ตารางผู้คน: | people | CREATE TABLE `people` ( `people_id` bigint(20) NOT NULL AUTO_INCREMENT, `company_id` bigint(20) NOT NULL, `name` varchar(255) DEFAULT NULL, `password` …

4
SQL Server พบการร้องขอ I / O ที่ใช้เวลานานกว่า 15 วินาที
ในการผลิต SQL Server เรามีการกำหนดค่าดังต่อไปนี้: 3 เซิร์ฟเวอร์ Dell PowerEdge R630 ซึ่งรวมอยู่ในกลุ่มความพร้อมใช้งานทั้งหมด 3 เชื่อมต่อกับหน่วยเก็บข้อมูล Dell SAN เดียวซึ่งเป็นอาร์เรย์ RAID ในบางครั้งในระดับประถมศึกษาเราเห็นข้อความคล้ายกับด้านล่าง: SQL Server พบคำขอ I / O 11 รายการที่เกิดขึ้นในเวลานานกว่า 15 วินาทีเพื่อให้เสร็จสมบูรณ์ในไฟล์ [F: \ Data \ MyDatabase.mdf] ใน id ฐานข้อมูล 8 การจัดการไฟล์ OS คือ 0x0000000000001FBC ออฟเซ็ตของ I / O ที่ยาวล่าสุดคือ: 0x000004295d0000 ระยะเวลาของ I / O …

4
ดัชนีประสิทธิภาพสำหรับ CHAR กับ VARCHAR (Postgres)
ในคำตอบนี้ ( /programming/517579/strings-as-primary-keys-in-sql-database ) คำพูดเดียวจับตาฉัน: โปรดทราบว่ามักจะมีความแตกต่างระหว่าง CHAR และ VARCHAR บ่อยมากเมื่อทำการเปรียบเทียบดัชนี สิ่งนี้ใช้ได้ / ยังใช้กับ Postgres หรือไม่? ฉันพบหน้าเว็บใน Oracle ที่อ้างว่าCHARเป็นนามแฝงไม่มากก็น้อยVARCHARดังนั้นประสิทธิภาพของดัชนีก็เหมือนกัน แต่ฉันไม่พบอะไรที่ชัดเจนสำหรับ Postgres

3
วิธีรับการใช้งาน CPU ตามฐานข้อมูลสำหรับอินสแตนซ์เฉพาะ
ฉันพบข้อความค้นหาต่อไปนี้เพื่อตรวจจับการใช้งาน CPU ตามฐานข้อมูล แต่มีการแสดงผลลัพธ์ที่แตกต่าง: WITH DB_CPU_Stats AS ( SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms] FROM sys.dm_exec_query_stats AS qs CROSS APPLY ( SELECT CONVERT(int, value) AS [DatabaseID] FROM sys.dm_exec_plan_attributes(qs.plan_handle) WHERE attribute = N'dbid') AS F_DB GROUP BY DatabaseID ) SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num], DatabaseName, [CPU_Time_Ms], …

6
SQL Server 2012 ช้ากว่า 2008
ฉันย้ายเว็บไซต์ขนาดใหญ่และฐานข้อมูลจากเซิร์ฟเวอร์เก่า (Windows 2008 / SQL Server 2008/16 GB RAM / 2 x 2.5 GHz Quad Core / ดิสก์ SAS) ไปยังเซิร์ฟเวอร์รุ่นใหม่ที่ดีกว่ามาก (Windows 2008 R2 / SQL Server 2012 SP1 / 64 GB RAM / 2 x 2.1 GHz 16 คอร์โปรเซสเซอร์ / ดิสก์ SSD) ฉันแยกไฟล์ฐานข้อมูลบนเซิร์ฟเวอร์เก่าคัดลอกและแนบไฟล์บนเซิร์ฟเวอร์ใหม่ ทุกอย่างเป็นไปด้วยดี หลังจากนั้นฉันเปลี่ยนเป็นระดับความเข้ากันได้เป็น 110 สถิติที่อัปเดตสร้างดัชนีใหม่ สำหรับความผิดหวังครั้งใหญ่ของฉันฉันสังเกตว่าการสืบค้น sql ส่วนใหญ่นั้นช้ากว่ามาก …

4
ฟิลด์ INCLUDE ดัชนีขนาดใหญ่จะมีผลต่อประสิทธิภาพของระบบอย่างไร
คำถามนี้เป็นคำถามเกี่ยวกับประสิทธิภาพของดัชนี SQL Server กับvarchar(2000)เป็นINCLUDEในดัชนีที่ครอบคลุม ฉันพยายามปรับปรุงประสิทธิภาพในแอปพลิเคชันฐานข้อมูลที่ช้าและไม่เสถียร ในบางกรณีข้อมูลที่มีการเข้าถึงผ่านสตริง varchar ขนาดใหญ่ที่มีการค้นหารวมทั้งการดำเนินสตริง multple เหมือนSUBSTRING(), และSPACE() DATALENGTH()นี่คือตัวอย่างที่ง่ายของการเข้าถึง update fattable set col3 = SUBSTRING(col3,1,10) + '*' + SUBSTRING(col3,12,DATALENGTH(col3)-12) from fattable where substring(col3,10,1) = 'A' and col2 = 2 สคีมามีลักษณะดังนี้: CREATE TABLE [dbo].[FatTable]( [id] [bigint] IDENTITY(1,1) NOT NULL, [col1] [nchar](12) NOT NULL, [col2] [int] NOT NULL, [col3] …

5
การรวม ORDER BY บนเคียวรีที่ส่งคืนแถวไม่มีผลกระทบต่อประสิทธิภาพอย่างมาก
เมื่อพิจารณาการเข้าร่วมตารางที่สามอย่างง่ายประสิทธิภาพการค้นหาจะเปลี่ยนไปอย่างมากเมื่อมีการรวม ORDER BY แม้ว่าจะไม่มีการส่งคืนแถว สถานการณ์ปัญหาที่เกิดขึ้นจริงใช้เวลา 30 วินาทีเพื่อส่งกลับศูนย์แถว แต่เป็นทันทีเมื่อไม่รวม ORDER BY ทำไม? SELECT * FROM tinytable t /* one narrow row */ JOIN smalltable s on t.id=s.tinyId /* one narrow row */ JOIN bigtable b on b.smallGuidId=s.GuidId /* a million narrow rows */ WHERE t.foreignId=3 /* doesn't match */ ORDER BY …

5
การจัดทำดัชนีตั้งแต่เริ่มต้นหรือเมื่อเกิดปัญหาประสิทธิภาพ
คำถามของฉันเกี่ยวกับการใช้ดัชนี ฉันควรเริ่มต้นสร้างดัชนีตั้งแต่เริ่มต้นหรือเมื่อมีปัญหาเรื่องประสิทธิภาพหรือไม่ นอกจากนี้เรายังสามารถสร้างดัชนีชั่วคราวขณะดำเนินการค้นหา อะไรคือข้อดีข้อเสียของเทคนิคดังกล่าว?

10
ปัญหาด้านประสิทธิภาพ 3 อันดับแรกที่คุณพบกับเซิร์ฟเวอร์ SQL ของคุณคืออะไร
ฉันเป็นนักเรียนจากมหาวิทยาลัย Fontys ใน Eindhoven และขณะนี้ฉันกำลังดำเนินการสัมภาษณ์หลายชุดเพื่อช่วยในการพัฒนาเครื่องมือ SQL Server และฉันต้องการรับคำติชมจากผู้เชี่ยวชาญในสาขานี้ หนึ่งในคำถามของฉันคือ: ปัญหาด้านประสิทธิภาพ 3 อันดับแรกที่คุณพบกับอินสแตนซ์ของเซิร์ฟเวอร์ SQL ของคุณคืออะไรและคุณระบุปัญหาเหล่านั้นได้อย่างไร โดยเฉพาะฉันสนใจสคริปต์และเครื่องมือที่ใช้วัดสิ่งนี้

1
ประโยชน์ของการใช้ WITH TABLOCK บน INSERT
ในบางกรณีการทำINSERT INTO <tablename> (WITH TABLOCK)จะเร็วขึ้นเนื่องจากการบันทึกขั้นต่ำ สถานการณ์เหล่านั้นรวมถึงการมีฐานข้อมูลในBULK_LOGGEDรูปแบบการกู้คืน มีประโยชน์ด้านประสิทธิภาพที่เป็นไปได้อื่น ๆ ที่จะใช้WITH TABLOCKในINSERTตารางว่างเปล่าเมื่อฐานข้อมูล ( tempdb ) กำลังใช้SIMPLEโมเดลการกู้คืนหรือไม่? ฉันทำงานกับ SQL Server 2012 Standard Edition กรณีการใช้งานของฉันใช้สำหรับการสร้างและจากนั้นสร้างตารางชั่วคราวภายในโพรซีเดอร์ที่เก็บไว้โดยใช้INSERT...SELECT, ซึ่งอาจมีแถวได้มากถึงสองสามล้านแถว ฉันพยายามหลีกเลี่ยงการใช้tempdb ในทางที่ผิด แต่บางครั้งก็จำเป็น TABLOCKฉันพยายามที่จะสร้างกรณีที่จะต้องใช้ ดูเหมือนว่ามันจะไม่ทำร้ายอะไรและอาจมีประโยชน์ ฉันพยายามที่จะคิดออกว่ามีประโยชน์พอที่จะเพิ่มได้ทุกที่ในฐานรหัสของเราหรือไม่ซึ่งฉันแน่ใจว่าไม่มีกระบวนการอื่นที่ต้องการเขียนลงในตาราง ฉันมักจะแทรกลงในตารางชั่วคราวที่สร้างขึ้นใหม่ด้วย PK แบบคลัสเตอร์ แต่บางครั้งก็ใช้กอง

2
ปัญหาประสิทธิภาพการทำงานของ MySQL โดยใช้คอลัมน์วันที่จัดทำดัชนี
ฉันพยายามที่จะแก้ปัญหาต่อไปนี้เป็นเวลาประมาณหนึ่งชั่วโมงในขณะนี้และยังไม่ได้รับเพิ่มเติมด้วย โอเคฉันมีโต๊ะ (MyISAM): +---------+-------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | http | smallint(3) | YES | MUL | 200 | | | elapsed | float(6,3) | NO | …

5
วิธีเพิ่มประสิทธิภาพ SELECT ช้ามากด้วย LEFT JOIN บนตารางขนาดใหญ่
ฉัน googling ให้การศึกษาด้วยตนเอง & กำลังมองหาวิธีแก้ปัญหาเป็นเวลาหลายชั่วโมง แต่ไม่มีโชค ฉันพบคำถามที่คล้ายกันสองสามข้อที่นี่ แต่ไม่ใช่กรณีนี้ ตารางของฉัน: คน (ประมาณ 10M แถว) แอตทริบิวต์ (สถานที่, อายุ, ... ) ลิงก์ (M: M) ระหว่างบุคคลและแอตทริบิวต์ (ประมาณ 40M แถว) ดัมพ์เต็ม ~ 280MB สถานการณ์: ฉันพยายามเลือกรหัสบุคคลทั้งหมด ( person_id) จากบางสถานที่ ( location.attribute_value BETWEEN 3000 AND 7000) เป็นเพศ ( gender.attribute_value = 1) เกิดในบางปี ( bornyear.attribute_value BETWEEN 1980 AND …

1
เหตุใด SQL Server จึงไม่มีคำขอดัชนีที่ขาดหายไปใน DMV หรือแผนการสืบค้น
ฉันมีฐานข้อมูล SQL Server ที่แบบสอบถามค่อนข้างช้าและมีการล็อคและบล็อกจำนวนมาก เมื่อฉันดูดัชนี DMV ที่ขาดหายไปและแผนการสืบค้นไม่มีคำแนะนำใด ๆ ทำไมถึงเป็นอย่างนั้น?

2
ประสิทธิภาพการแทรกของ SQL Server 2016 เทียบกับ 2012
ฉันมี SQL Server สองอินสแตนซ์บนเซิร์ฟเวอร์เดียวกัน: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) รุ่นมาตรฐาน (64 บิต) Microsoft SQL Server 2016 (SP1-CU5) (KB4040714) - 13.0.4451.0 (X64) รุ่นองค์กร (64 บิต) ผลลัพธ์ sp_configure เหมือนกันทั้งสองอินสแตนซ์ (ยกเว้นตัวเลือกใหม่ 2016) ฉันสร้างฐานข้อมูลใหม่บนทั้งสองอินสแตนซ์ในโฟลเดอร์ดิสก์เดียวกัน พารามิเตอร์ Autogrowth เหมือนกัน ตัวเลือกสถิติอัตโนมัติและการอัปเดตอัตโนมัติถูกปิด จากนั้นฉันได้ทำการทดสอบโดยมีใบมีด 10,000 อันเข้าไปในกอง: set nocount on go create table dbo.TestInsert ( i int …

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