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

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

1
ทำไมข้อความค้นหา sqlite นี้ช้าลงมากเมื่อฉันสร้างดัชนีคอลัมน์
ฉันมีฐานข้อมูล sqlite ที่มีสองตารางแต่ละแถวมี 50,000 แถวมีชื่อ (คน) ปลอม ฉันได้สร้างแบบสอบถามง่ายๆเพื่อค้นหาจำนวนชื่อที่มี (ชื่อที่กำหนด, ชื่อกลาง, นามสกุล) ที่ใช้ร่วมกันสำหรับทั้งสองตาราง: select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial; เมื่อไม่มีดัชนียกเว้นในคีย์หลัก (ไม่เกี่ยวข้องกับแบบสอบถามนี้) มันจะทำงานอย่างรวดเร็ว: [james@marlon Downloads] $ time sqlite3 generic_data_no_indexes.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;" 131 real 0m0.115s …

2
วิธีติดตามการบล็อกที่เกิดขึ้นน้อยกว่าหนึ่งวินาที - SQL Server
ฉันกำลังพยายามแก้ไขปัญหาการบล็อกซึ่งเกิดขึ้นน้อยกว่าหนึ่งวินาที แอปพลิเคชัน OLTP นั้นมีความละเอียดอ่อนมากและต้องมีเวลาตอบสนองน้อยกว่า 200ms สำหรับการทำธุรกรรมบางอย่างตาม SLA ที่ตกลงกันไว้ เรามีปัญหาการเพิ่มระดับการล็อคด้วยการเปิดตัวรหัสใหม่ซึ่งเราสามารถแก้ไขได้ด้วยการลดขนาดแบทช์ในการอัปเดต แม้ว่าจะมีขนาดเล็ก แต่เราสงสัยว่า sp ใหม่บล็อกแถวเดียวกันกับที่ธุรกรรม OLTP กำลังอัปเดต ฉันต้องการค้นหาเซสชันที่กำลังถูกบล็อกและทรัพยากรกำลังรออยู่ ตามความเข้าใจของฉัน "เกณฑ์กระบวนการที่ถูกบล็อก" สามารถตั้งค่าได้อย่างน้อย 1 วินาทีและดังนั้นสิ่งนี้จะไม่จับการบล็อก ฉันกำลังทดลองกับ wait_info และ wait_completed x events มีวิธีอื่นที่เราสามารถติดตามสิ่งนี้ได้หรือไม่ ขอบคุณ

1
เหตุใด COUNT หลายรายการจึงเร็วกว่าหนึ่ง SUM ด้วย CASE
ฉันอยากรู้ว่าวิธีใดในสองวิธีต่อไปนี้เร็วกว่า: 1) สามCOUNT: SELECT Approved = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Approved'), Valid = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Valid'), Reject = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Reject') 2) SUMด้วยFROM--clause: SELECT Approved = SUM(CASE WHEN Status = 'Approved' THEN 1 ELSE …

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

1
การแก้ไขปัญหา SOS_SCHEDULER_YIELD รอ
ใช้ ERP ในองค์กรของเรา (Dynamics AX 2012) ฉันสังเกตว่าสภาพแวดล้อมการผลิตของเรานั้นช้ากว่าระบบการพัฒนาของเรามาก หลังจากทำกิจกรรมเดียวกันทั้งในสภาพแวดล้อมการพัฒนาและการใช้งานจริงในขณะทำการสืบค้นกลับฉันยืนยันว่าข้อความค้นหา SQL กำลังทำงานช้ามากในสภาพแวดล้อมการผลิตของเราเมื่อเทียบกับการพัฒนา (เฉลี่ย 10-50x ช้ากว่า) ตอนแรกฉันอ้างว่าสิ่งนี้เพื่อโหลดและเรียกใช้กิจกรรมเดียวกันอีกครั้งในสภาพแวดล้อมการผลิตในช่วงนอกเวลาทำงานและพบผลลัพธ์เดียวกันในการติดตาม ฉันล้างสถิติการรอของฉันใน SQL Server แล้วปล่อยให้เซิร์ฟเวอร์ทำงานภายใต้ปริมาณการผลิตตามปกติชั่วครู่หนึ่งจากนั้นเรียกใช้แบบสอบถามนี้: WITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], [signal_wait_time_ms] / 1000.0 AS [SignalS], [waiting_tasks_count] AS [WaitCount], 100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() …

4
ดีไม่ดีหรือไม่แยแส: WHERE 1 = 1
เมื่อให้คำถามนี้กับ reddit ฉันได้ล้างคิวรีเพื่อชี้ให้เห็นว่าปัญหาอยู่ที่ไหนในเคียวรี ฉันใช้เครื่องหมายจุลภาคก่อนและWHERE 1=1ทำให้การสืบค้นแก้ไขง่ายขึ้นดังนั้นโดยทั่วไปแล้วข้อความค้นหาของฉันจะเป็นดังนี้: SELECT C.CompanyName ,O.ShippedDate ,OD.UnitPrice ,P.ProductName FROM Customers as C INNER JOIN Orders as O ON C.CustomerID = O.CustomerID INNER JOIN [Order Details] as OD ON O.OrderID = OD.OrderID INNER JOIN Products as P ON P.ProductID = OD.ProductID Where 1=1 -- AND O.ShippedDate Between '4/1/2008' And …

4
MySQL โหลดข้อมูล INFILE ช้า 80% หลังจากป้อนกิ๊กเล็กน้อยด้วยเครื่องมือ InnoDB
ฉันกำลังโหลดไฟล์ 100GB ผ่าน LOAD DATA INFILE ฉันประสบความสำเร็จกับ MyISAM ไม่กี่ชั่วโมงและทำ ฉันลองใช้ InnoDB ตอนนี้ โหลดเริ่มต้นอย่างรวดเร็วที่มากกว่า 10MB / วินาที (ดูการขยายไฟล์ตารางfile_per_tableเปิดอยู่) แต่หลังจากนั้นประมาณ 5GB ของข้อมูลมันจะช้าลงเป็นช่วง 2-4MB / วินาทีเพราะฉันได้มากกว่า 20GB มันก็ลดลงประมาณ 2MB / วินาที ขนาดบัฟเฟอร์พูล InnoDB คือ 8G และฉันได้ทำสิ่งต่อไปนี้ก่อนที่จะใช้คำสั่งโหลดข้อมูล INFILE: SET @@session.sql_log_bin=0; SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; alter table item_load disable keys; //Run LOAD DATA …

4
เป็นไปได้ไหมที่จะเพิ่มประสิทธิภาพการสืบค้นในตารางแคบ ๆ ที่มีแถวนับล้านแถว
ฉันมีข้อความค้นหาที่ใช้เวลาโดยเฉลี่ย 2,500 มิลลิวินาทีในการดำเนินการให้เสร็จสมบูรณ์ ตารางของฉันแคบมาก แต่มี 44 ล้านแถว ฉันมีตัวเลือกอะไรบ้างในการปรับปรุงประสิทธิภาพหรือตัวเลือกนี้ดีเท่าที่ได้รับ คำค้นหา SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31'; โต๊ะ CREATE TABLE [dbo].[Heartbeats]( [ID] [int] IDENTITY(1,1) NOT NULL, [DeviceID] [int] NOT NULL, [IsPUp] [bit] NOT NULL, [IsWebUp] [bit] NOT NULL, [IsPingUp] [bit] NOT NULL, [DateEntered] [datetime] NOT NULL, …

3
การทดสอบความสามารถในการปรับขนาดของกระบวนงานที่เก็บไว้
ฉันมีแอปพลิเคชันอีเมลที่จะถูกส่งต่อไปยัง UI จำนวนข้อความใหม่สำหรับผู้ใช้ที่ระบุในการโหลดหน้าเว็บแต่ละหน้า ฉันมีหลายรูปแบบของสิ่งที่ฉันกำลังทดสอบในระดับ DB แต่ทั้งหมดจะถูกสรุปโดยการเรียก proc ที่เก็บไว้ ฉันพยายามกดฐานข้อมูลเพื่อดูว่าจุดแตกหัก (# ของคำขอต่อวินาที) จะเป็นอย่างไร โดยสรุปฉันมีตารางเช่น userId นี้ newMsgCount พร้อมกับดัชนีคลัสเตอร์บน userId SQL ควรสามารถตอบสนองต่อเซิร์ฟเวอร์เหล่านี้หลายร้อยหรือหลายพันต่อวินาที ฉันคิดว่าคนเกียจคร้านเป็นแอป. NET ของฉัน ฉันจะทำให้การทดสอบนี้เป็นผลการทดสอบที่ดีโดยใช้ประสิทธิภาพของ SQL ได้อย่างไร มีเครื่องมือสำหรับสิ่งนี้ที่ฉันสามารถให้ชื่อ proc ที่เก็บไว้และ param เพื่อให้ pund DB ของฉันหรือไม่ ฉันต้องการดูว่า DB สามารถส่งคืนนาทีได้หรือไม่ จาก 250 คำตอบต่อวินาที

3
SQL Server - ชั่วคราวเทียบกับตารางทางกายภาพ
มีการเคลื่อนไหวอยู่ในสถานที่ของฉันจ้างเพื่อย้ายออกจากการใช้ตาราง #temp และแทนที่จะใช้ตารางทางกายภาพถาวรกับ SPID เมื่อใดก็ตามที่หนึ่งก่อนหน้านี้จะถูกแทรกลงในตาราง #temp ตอนนี้INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)จำเป็นต้องมี - พร้อมกับDELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPIDคำสั่งที่จุดเริ่มต้นของเช่นขั้นตอนการจัดเก็บ นอกจากนี้มันจะไปได้ทุกที่โดยไม่บอกว่าเหล่านี้ตารางถาวรสำหรับการจัดเก็บข้อมูลชั่วคราว WHERE SPID = @@SPID'ถูกนำมาใช้อย่างใดอย่างหนึ่งต้องมีความระมัดระวังที่จะรวมถึง ตรรกะเบื้องหลังการย้ายไปสู่การปฏิบัตินี้คือมันจะปรับปรุงประสิทธิภาพโดยรวมของเซิร์ฟเวอร์ที่การสืบค้นกำลังทำงานอยู่ (โดยการลด I / O และการช่วงชิงใน tempdb) ฉันไม่กระตือรือร้นกับวิธีการนี้ด้วยเหตุผลหลายประการ - มันน่าเกลียดอาจเป็นอันตรายและดูเหมือนว่าอาจเป็นอันตรายต่อประสิทธิภาพการทำงานของข้อความค้นหาเหล่านั้นที่ใช้รูปแบบใหม่ ใครบ้างมีประสบการณ์กับวิธีนี้หรือคล้ายกันในการกำจัดตาราง #temp หรือไม่

2
ปัญหาประสิทธิภาพการทำงานที่แปลกกับ SQL Server 2016
เรามีอินสแตนซ์เดียวของ SQL Server 2016 SP1 ที่ทำงานในเครื่องเสมือน VMware มันมี 4 ฐานข้อมูลสำหรับแต่ละแอปพลิเคชันที่แตกต่างกัน แอปพลิเคชั่นเหล่านั้นล้วน แต่อยู่บนเซิร์ฟเวอร์เสมือนแยกกัน ยังไม่มีการใช้งานจริง ผู้คนที่ทดสอบแอพพลิเคชั่นกำลังรายงานปัญหาด้านประสิทธิภาพ นี่คือสถิติของเซิร์ฟเวอร์: 128 GB RAM (หน่วยความจำสูงสุด 110GB สำหรับ SQL Server) 4 คอร์ที่ 4.6 GHz การเชื่อมต่อเครือข่าย 10 GBit ที่เก็บข้อมูลทั้งหมดใช้ SSD ไฟล์โปรแกรมไฟล์บันทึกไฟล์ฐานข้อมูลและ tempdb อยู่บนพาร์ติชันแยกต่างหากของเซิร์ฟเวอร์ asd ผู้ใช้ทำการเข้าถึงหน้าจอเดียวผ่านแอปพลิเคชัน ERP ที่ใช้ C ++ เมื่อฉันทดสอบ SQL Server กับ Microsoft ostressโดยใช้แบบสอบถามขนาดเล็กจำนวนมากหรือแบบสอบถามขนาดใหญ่ฉันได้รับประสิทธิภาพสูงสุด สิ่งเดียวที่ควบคุมปริมาณคือลูกค้าเพราะเขาไม่สามารถตอบได้เร็วพอ แต่เมื่อมีผู้ใช้แทบจะไม่ SQL …

1
เพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลขนาดใหญ่ (25+ ล้านแถวโดยใช้ max () และ GROUP BY)
ฉันใช้ Postgres 9.3.5 และฉันมีตารางขนาดใหญ่ในฐานข้อมูลปัจจุบันมี 25 ล้านแถวและมีแนวโน้มที่จะใหญ่ขึ้นอย่างรวดเร็ว ฉันพยายามเลือกแถวที่เฉพาะเจาะจง (ทุกแถวมีเฉพาะแถวunit_idล่าสุดunit_timestampสำหรับแถวแต่ละแถว) ด้วยข้อความค้นหาง่ายๆเช่น: SELECT unit_id, max(unit_timestamp) AS latest_timestamp FROM all_units GROUP BY unit_id; ไม่มีดัชนีใด ๆ แบบสอบถามนี้ใช้เวลาประมาณ 35 วินาทีในการดำเนินการ ด้วยดัชนีที่กำหนด ( CREATE INDEX partial_idx ON all_units (unit_id, unit_timestamp DESC);) เวลาแบบสอบถามจะสั้นลงเป็นประมาณ (เท่านั้น) 19 วินาที ฉันสงสัยว่าจะเป็นไปได้หรือไม่ที่จะเรียกใช้คิวรีของฉันในเวลาที่น้อยลง (เช่นเพียงไม่กี่วินาที) และถ้าเป็นเช่นนั้นฉันควรทำตามขั้นตอนใดเพื่อปรับให้เหมาะสมยิ่งขึ้นไปอีก การถ่ายโอนข้อมูลโครงสร้างตารางของฉันมีลักษณะเช่นนี้: CREATE TABLE "all_units" ( "unit_id" int4 NOT NULL, …

2
เคียวรีที่มีประสิทธิภาพเพื่อรับค่าสูงสุดต่อกลุ่มจากตารางขนาดใหญ่
รับตาราง: Column | Type id | integer latitude | numeric(9,6) longitude | numeric(9,6) speed | integer equipment_id | integer created_at | timestamp without time zone Indexes: "geoposition_records_pkey" PRIMARY KEY, btree (id) ตารางมี 20 ล้านบันทึกที่ไม่ได้พูดค่อนข้างมาก แต่มันทำให้การสแกนตามลำดับช้าลง ฉันจะได้รับบันทึกสุดท้ายmax(created_at)ของแต่ละรายการได้equipment_idอย่างไร ฉันได้ลองค้นหาทั้งสองข้อต่อไปนี้โดยมีหลายรุ่นที่ฉันได้อ่านจากคำตอบของหัวข้อนี้: select max(created_at),equipment_id from geoposition_records group by equipment_id; select distinct on (equipment_id) equipment_id,created_at from …

4
คิวรีช้าลงบนโต๊ะขนาดใหญ่ที่มี GROUP BY และ ORDER BY
ฉันมีตารางที่มี 7.2 ล้านสิ่งอันดับซึ่งมีลักษณะดังนี้: table public.methods column | type | attributes --------+-----------------------+---------------------------------------------------- id | integer | not null DEFAULT nextval('methodkey'::regclass) hash | character varying(32) | not null string | character varying | not null method | character varying | not null file | character varying | not null type | character …

3
สิ่งที่ดึงมาจากดิสก์ในระหว่างการสืบค้น?
คำถามธรรมดาค่อนข้างน่าจะมีคำตอบอยู่บ้าง แต่ฉันไม่สามารถสร้างคำถามค้นหาที่เหมาะสมสำหรับ Google ... จำนวนคอลัมน์ในตารางใดตารางหนึ่งมีผลต่อประสิทธิภาพของแบบสอบถามหรือไม่เมื่อทำการสอบถามในชุดย่อยของตารางนั้น ตัวอย่างเช่นหากตาราง Foo มี 20 คอลัมน์ แต่แบบสอบถามของฉันเลือกเพียง 5 คอลัมน์เหล่านั้นจะมีคอลัมน์ 20 (เทียบกับพูด 10) มีผลต่อประสิทธิภาพการค้นหาหรือไม่ สมมติว่าความเรียบง่ายนั้นมีอะไรรวมอยู่ใน WHERE clause ในคอลัมน์ 5 คอลัมน์เหล่านั้น ฉันกังวลเกี่ยวกับการใช้แคชบัฟเฟอร์ของ Postgres นอกเหนือจากดิสก์แคชของระบบปฏิบัติการ ฉันไม่เข้าใจการออกแบบที่จัดเก็บข้อมูลจริงของ Postgres ตารางถูกเก็บไว้ในหลาย ๆ หน้า (ขนาดเริ่มต้นที่ 8k ต่อหน้า) แต่ฉันไม่เข้าใจว่าจะมีการจัดเรียงทูเปิลอย่างไร PG ฉลาดพอที่จะดึงข้อมูลจากดิสก์ที่ประกอบด้วยคอลัมน์ 5 คอลัมน์เหล่านั้นได้หรือไม่

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