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

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

3
มีจุดใดบ้างในการลดขนาดคอลัมน์ VARCHAR?
Googling แถว ๆนั้นดูเหมือนว่าจะมีการรายงานแบบผสมไม่ว่าขนาดของVARCHAR2คอลัมน์ใน Oracle จะส่งผลกระทบต่อประสิทธิภาพหรือไม่ ฉันต้องการที่จะให้คำถามVARCHARขนาดบิดเล็กน้อยและหวังว่าจะได้รับข้อมูลเชิงลึกในนี้: ที่กำหนด (หลาย) สาขาข้อความอิสระ ( ไม่ได้สิ่งที่สั้น ๆ เช่นชื่อ) ที่คุณต้องการในการจัดเก็บใน (Oracle) ฐานข้อมูลจะมีจุดใด (WRT. ประสิทธิภาพหรืออื่น ๆ ) ในไม่ maxing ออกVARCHARความจุ ( VARCHAR2(4000)ใน Oracle) แต่เลือก ค่าที่น้อยกว่าเช่น 1024 หรือ 512 เพราะนั่นน่าจะเพียงพอใน 98% ของคดีอยู่แล้ว

2
เข้าร่วม SQL Server / สถานที่ประมวลผลคำสั่ง
หลังจากอ่านแบบสอบถาม SQL ช้าไม่แน่ใจว่าจะเพิ่มประสิทธิภาพมันทำให้ฉันคิดเกี่ยวกับประสิทธิภาพการทำงานทั่วไปของแบบสอบถาม แน่นอนว่าเราต้องการผลลัพธ์ของตารางแรก (เมื่อมีการรวมตารางอื่น ๆ ) ให้เล็กที่สุดเท่าที่จะเป็นไปได้ก่อนที่จะเข้าร่วม (Inner joins สำหรับคำถามนี้) เพื่อให้การสืบค้นของเราเร็วขึ้นเล็กน้อย ตัวอย่างควร: SELECT * FROM ( SELECT * FROM table1 WHERE col = @val ) t INNER JOIN table2 ON col = col2 จะดีกว่า / เร็วกว่า: SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col …

2
ค่าใช้จ่ายในการอัปเดตคอลัมน์ทั้งหมดคืออะไรแม้แต่คนที่ไม่ได้เปลี่ยนแปลง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา เมื่อพูดถึงการอัพเดตแถวเครื่องมือ ORM จำนวนมากออกคำสั่ง UPDATE ที่ตั้งค่าทุกคอลัมน์ที่เกี่ยวข้องกับเอนทิตีนั้น ข้อดีคือคุณสามารถแบทช์ข้อความสั่งการอัพเดทได้อย่างง่ายดายเนื่องจากUPDATEข้อความนั้นเหมือนกันไม่ว่าคุณจะเปลี่ยนเอนทิตีแอตทริบิวต์ใด ยิ่งไปกว่านั้นคุณยังสามารถใช้การแคชคำสั่งฝั่งเซิร์ฟเวอร์และไคลเอนต์ได้เช่นกัน ดังนั้นถ้าฉันโหลดเอนทิตีและตั้งค่าคุณสมบัติเดียวเท่านั้น: Post post = entityManager.find(Post.class, 1L); post.setScore(12); คอลัมน์ทั้งหมดจะมีการเปลี่ยนแปลง: UPDATE post SET score = 12, title = 'High-Performance Java Persistence' WHERE id = 1 ทีนี้สมมติว่าเรามีดัชนีในtitleคุณสมบัติเช่นกันฐานข้อมูลไม่ควรตระหนักว่ามูลค่าไม่เปลี่ยนแปลง ในบทความนี้ Markus Winand พูดว่า: การอัปเดตในคอลัมน์ทั้งหมดแสดงรูปแบบเดียวกับที่เราสังเกตเห็นแล้วในส่วนก่อนหน้า: เวลาตอบสนองจะเพิ่มขึ้นพร้อมกับดัชนีเพิ่มเติมแต่ละรายการ ฉันสงสัยว่าทำไมโอเวอร์เฮดนี้เนื่องจากฐานข้อมูลโหลดหน้าข้อมูลที่เกี่ยวข้องจากดิสก์ไปยังหน่วยความจำและเพื่อให้สามารถทราบได้ว่าค่าคอลัมน์จำเป็นต้องเปลี่ยนหรือไม่ แม้สำหรับดัชนีก็ไม่ต้องปรับสมดุลอะไรเลยเนื่องจากค่าดัชนีไม่เปลี่ยนแปลงสำหรับคอลัมน์ที่ไม่ได้เปลี่ยนแปลง แต่รวมอยู่ในการอัพเดท เป็นดัชนี B + …

1
วิธีที่ดีที่สุดในการเขียน SQL Query ที่ตรวจสอบคอลัมน์สำหรับค่าที่ไม่เป็น NULL หรือ NULL
ฉันมี SP พร้อมพารามิเตอร์ที่มีค่า NULL เป็นค่าเริ่มต้นจากนั้นฉันต้องการสอบถามเช่นนี้ SELECT ... FROM ... WHERE a.Blah = @Blah AND (a.VersionId = @VersionId OR (@VersionId IS NULL AND a.VersionId IS NULL)); WHEREตรวจสอบข้างต้นสำหรับทั้งค่าที่ไม่เป็นโมฆะและค่า NULL @VersionIdสำหรับ มันจะดีกว่าในแง่ของประสิทธิภาพแทนที่จะใช้IFคำสั่งและทำซ้ำแบบสอบถามเป็นที่ค้นหา non-NULL และอื่นสำหรับ NULL เช่นนั้น : IF @VersionId IS NULL BEGIN SELECT ... FROM ... WHERE a.Blah = @Blah AND a.VersionId IS …

3
มีความแตกต่างในการดำเนินการระหว่างเงื่อนไข JOIN และเงื่อนไข WHERE หรือไม่
มีความแตกต่างของประสิทธิภาพระหว่างเคียวรีตัวอย่างทั้งสองหรือไม่ แบบสอบถาม 1: select count(*) from table1 a join table2 b on b.key_col=a.key_col where b.tag = 'Y' แบบสอบถาม 2; select count(*) from table1 a join table2 b on b.key_col=a.key_col and b.tag = 'Y' สังเกตเห็นความแตกต่างเพียงอย่างเดียวคือการวางเงื่อนไขเสริม; ครั้งแรกที่ใช้WHEREประโยคและครั้งที่สองจะเพิ่มเงื่อนไขในONข้อ เมื่อฉันเรียกใช้แบบสอบถามเหล่านี้ในระบบ Teradata ของฉันแผนการอธิบายนั้นเหมือนกันและขั้นตอนการเข้าร่วมแสดงเงื่อนไขเพิ่มเติมในแต่ละกรณี อย่างไรก็ตามในคำถาม SO นี้เกี่ยวกับ MySQL หนึ่งในคำตอบที่แนะนำว่าควรใช้รูปแบบที่สองเนื่องจากWHEREการประมวลผลเกิดขึ้นหลังจากทำการรวม มีกฎทั่วไปที่ต้องปฏิบัติตามเมื่อมีการเข้ารหัสคิวรีเช่นนี้ ฉันเดาว่ามันต้องขึ้นอยู่กับแพลตฟอร์มเพราะเห็นได้ชัดว่ามันไม่ได้สร้างความแตกต่างให้กับฐานข้อมูลของฉัน แต่บางทีนั่นอาจเป็นเพียงคุณสมบัติของ Teradata และถ้ามันเป็นขึ้นอยู่กับแพลตฟอร์มผมชอบมากที่จะได้รับการอ้างอิงเอกสารไม่กี่; ฉันไม่รู้ว่าจะมองหาอะไรจริงๆ

3
อะไรคือความแตกต่างระหว่าง POINT (X, Y) และ GeomFromText (“ POINT (XY)”)
ฉันต้องการจัดเก็บตำแหน่งทางเรขาคณิตบางอย่างในฐานข้อมูล MySQL ของฉัน สำหรับสิ่งนี้ฉันใช้ประเภทข้อมูล POINT เกือบทุกที่ฉันอ่านว่าGeomFromTextควรใช้ฟังก์ชั่นเพื่อแทรกข้อมูลลงในตาราง อย่างไรก็ตามฉันพบว่าPOINT(X,Y)ยังใช้งานได้ ฉันไม่พบคำอธิบายว่าทำไมควรจะนำมาใช้แทนGeomFromTextPOINT ตัวอย่างเช่นฉันมีความสัมพันธ์แบบง่าย ๆ ดังต่อไปนี้: CREATE TABLE Site ( SiteID BIGINT UNSIGNED, Position POINT ); และฉันสามารถแทรกค่าโดยใช้สองตัวแปรต่อไปนี้: INSERT INTO Site ( 1, GeomFromText( 'POINT(48.19976 16.45572)' ) ); INSERT INTO Site ( 2, POINT(48.19976, 16.45572) ); เมื่อฉันดูตาราง ( SELECT * FROM Site) ฉันเห็นหยดเลขฐานสองเดียวกันสำหรับตำแหน่งและเมื่อฉันดูพิกัด ( SELECT *, …

3
สุดยอด MyISAM และ InnoDB
เป็นไปได้หรือไม่ที่จะทำให้ InnoDB ใช้ดัชนีเช่นเดียวกับ MyISAM แทนที่จะเป็นดัชนีแบบคลัสเตอร์เนื่องจากข้อ จำกัด ของ RAM ในขณะที่รับประโยชน์จากประสิทธิภาพการทำงานพร้อมกัน?

2
รับและนำการทดสอบประสิทธิภาพมาใช้กับ Google BigTables (และฐานข้อมูลรวมอื่น ๆ )
มีวิธีใดที่มีประสิทธิภาพในการทดสอบประสิทธิภาพการทำงานของโปรแกรมในการดำเนินการกับฐานข้อมูลโดยเฉพาะในสภาพแวดล้อมที่ตัวฐานข้อมูลเองไม่มีเครื่องมือเฉพาะ? ตัวอย่างเช่นใน Google App Engine การโหลดหน้าเว็บทั้งหมดจะถูกประเมินเป็นการดำเนินการเดียวซึ่งอาจรวมถึงการดำเนินการฐานข้อมูลเฉพาะ ปัญหานี้ยังมีอยู่ใน SQLite และฐานข้อมูลรวมอื่น ๆ เนื่องจากเป็นการยากที่จะสรุปบทคัดย่อการเลือกและการแทรก (เทียบเท่า) ที่จำเป็นต้องทำการทดสอบจึงมีเครื่องมือฐานข้อมูลที่แนะนำให้ทำการวินิจฉัยอย่างละเอียดมากขึ้นเกี่ยวกับคำถามประเภทนี้หรือไม่?

3
การลบระเบียนช้าเมื่อเปิดใช้งานทริกเกอร์
ความคิดนี้ได้รับการแก้ไขด้วยลิงก์ด้านล่าง - งานแก้ไข - แต่โปรแกรมแก้ไขไม่ได้ ทำงานกับฝ่ายสนับสนุนของ Microsoft เพื่อแก้ไขปัญหา http://support.microsoft.com/kb/2606883 ตกลงดังนั้นฉันมีปัญหาที่ฉันต้องการจะออกไป StackOverflow เพื่อดูว่ามีใครมีความคิด หมายเหตุนี่คือกับ SQL Server 2008 R2 ปัญหา: การลบ 3000 รายการจากตารางที่มีระเบียน 15000 รายการใช้เวลา 3-4 นาทีเมื่อเปิดใช้งานทริกเกอร์และเพียง 3-5 วินาทีเมื่อปิดการใช้งานทริกเกอร์ การตั้งค่าตาราง เราจะเรียกสองโต๊ะหลักและรอง มัธยมศึกษามีบันทึกรายการที่ฉันต้องการลบดังนั้นเมื่อฉันลบฉันเข้าร่วมในตารางรอง กระบวนการทำงานก่อนคำสั่งลบเพื่อเติมข้อมูลตารางรองที่มีระเบียนที่จะถูกลบ ลบคำชี้แจง: DELETE FROM MAIN WHERE ID IN ( SELECT Secondary.ValueInt1 FROM Secondary WHERE SECONDARY.GUID = '9FFD2C8DD3864EA7B78DA22B2ED572D7' ); ตารางนี้มีคอลัมน์จำนวนมากและดัชนี NC …

2
เหตุใดการเพิ่มผู้ใช้ SQL Server ใน“ ดำเนินการบำรุงรักษาโวลุ่ม” จะช่วยเพิ่มความเร็วในการปรับขนาดฐานข้อมูลได้มาก?
ถ้าฉันต้องการสร้างฐานข้อมูล 5GB ด้วย CREATE DATABASE [test] CONTAINMENT = NONE ON PRIMARY ( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) ใช้เวลา1 นาทีบน SSD ของฉัน แต่เมื่อฉันเพิ่มผู้ใช้ SQL …

2
ทำไมการอ้างถึงตัวแปรในลูปที่ซ้อนกันของกำลังภาคบังคับ
ฉันเจอปัญหานี้เมื่อเร็ว ๆ นี้และไม่พบการสนทนาออนไลน์ แบบสอบถามด้านล่าง DECLARE @S VARCHAR(1) = ''; WITH T AS (SELECT name + @S AS name2, * FROM master..spt_values) SELECT * FROM T T1 INNER JOIN T T2 ON T1.name2 = T2.name2; รับแผนลูปซ้อนกันเสมอ การพยายามบังคับให้เกิดปัญหากับINNER HASH JOINหรือINNER MERGE JOINคำแนะนำจะทำให้เกิดข้อผิดพลาดดังต่อไปนี้ ตัวประมวลผลแบบสอบถามไม่สามารถสร้างแผนแบบสอบถามได้เนื่องจากคำแนะนำที่กำหนดไว้ในแบบสอบถามนี้ ส่งแบบสอบถามโดยไม่ระบุคำแนะนำใด ๆ และไม่ต้องใช้ SET FORCEPLAN ฉันพบวิธีแก้ปัญหาที่อนุญาตให้ใช้การรวมแฮชหรือการผสาน - การรวมตัวแปรในการรวม แผนที่สร้างขึ้นนั้นมีต้นทุนที่ต่ำกว่าอย่างมาก …

1
ASYNC_NETWORK_IO รอพิมพ์อะไรที่กังวลหรือไม่
ในการดูรายการของโพรซีเดอร์ที่เก็บไว้ซึ่งใช้เวลาในการประมวลผลนานจะมีความโดดเด่นที่ทำให้เกิดการรอคอยมากที่สุด อย่างไรก็ตามการรอนั้นส่วนใหญ่ (81%) เป็น ASYNC_NETWORK_IO และฉันรู้ว่าทำไม: กระบวนการที่เก็บไว้จะถ่ายโอนข้อมูลประมาณ 400 MB ในเอกสารอธิบายว่าสาเหตุของ ASYNC_NETWORK_IO คือไคลเอ็นต์ไม่สามารถตามกระแสข้อมูลได้และนั่นอาจเป็นจริง ฉันไม่แน่ใจว่าจะทำให้ลูกค้าติดตามได้อย่างไรเพราะมันคือการเรียกโพรซีเดอร์ที่เก็บไว้ผ่าน ADO.NET และเพียงแค่ประมวลผลชุดข้อมูล เมื่อได้รับข้อมูลนี้ฉันควรกังวลเกี่ยวกับประเภทรอ ASYNC_NETWORK_IO สำหรับกระบวนการนี้หรือไม่? จริง ๆ แล้วมันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่ ข้อมูลเพิ่มเติม: ฉันใช้ Service Pack 2 ของ SQL Server 2005 แอปไคลเอ็นต์อยู่ในกล่องเดียวกับ SQL Server (ฉันรู้ว่าฉันรู้ ... แต่ฉันไม่สามารถทำอะไรกับมันได้)

2
ขนาด varchar มีความสำคัญในตารางชั่วคราวหรือไม่?
มีการถกเถียงกันว่างานของภรรยาผมเกี่ยวกับเพียงแค่ใช้varchar(255)กับทุกvarcharสาขาในตารางชั่วคราวในขั้นตอนการจัดเก็บ โดยพื้นฐานแล้วค่ายหนึ่งต้องการใช้ 255 เพราะจะใช้ได้ตลอดแม้ว่าการเปลี่ยนแปลงคำจำกัดความและค่ายอื่นต้องการติดกับขนาดในตารางต้นฉบับเพื่อปรับปรุงประสิทธิภาพที่เป็นไปได้ ค่ายแสดงถูกต้องหรือไม่? มีความหมายอื่นหรือไม่? พวกเขากำลังใช้ SQL Server

2
การแคชดัชนี PostgreSQL
ฉันมีปัญหาในการค้นหาคำอธิบาย 'lay' ของวิธีการจัดทำดัชนีแคชใน PostgreSQL ดังนั้นฉันต้องการตรวจสอบความเป็นจริงของสมมติฐานเหล่านี้ทั้งหมดหรือทั้งหมด: ดัชนี PostgreSQL เช่นแถวอยู่บนดิสก์ แต่อาจถูกแคช ดัชนีอาจอยู่ในแคชทั้งหมดหรือไม่ทั้งหมด ไม่ว่าจะเป็นแคชหรือไม่ขึ้นอยู่กับความถี่ในการใช้งาน (ตามที่กำหนดโดยตัววางแผนคิวรี) ด้วยเหตุนี้ดัชนี 'สมเหตุสมผล' ส่วนใหญ่จึงจะอยู่ในแคชตลอดเวลา ดัชนีอยู่ในแคชเดียวกัน ( buffer cache?) เป็นแถวดังนั้นพื้นที่แคชที่ใช้โดยดัชนีจะไม่สามารถใช้ได้กับแถว แรงจูงใจของฉันสำหรับการทำความเข้าใจนี้ตามมาจากคำถามอื่นที่ฉันถามว่ามีข้อเสนอแนะว่าสามารถใช้ดัชนีบางส่วนในตารางซึ่งข้อมูลส่วนใหญ่จะไม่สามารถเข้าถึงได้ ก่อนดำเนินการนี้ฉันต้องการให้ชัดเจนว่าการใช้ดัชนีบางส่วนทำให้ได้เปรียบสองประการ: เราลดขนาดของดัชนีในแคชเพิ่มพื้นที่ว่างสำหรับแถวในแคช เราลดขนาดของ B-Tree ส่งผลให้เกิดการตอบแบบสอบถามที่รวดเร็วขึ้น

2
ดัชนีในคีย์หลักไม่ได้ใช้ในการเข้าร่วมง่าย
ฉันมีคำนิยามตารางและดัชนีต่อไปนี้: CREATE TABLE munkalap ( munkalap_id serial PRIMARY KEY, ... ); CREATE TABLE munkalap_lepes ( munkalap_lepes_id serial PRIMARY KEY, munkalap_id integer REFERENCES munkalap (munkalap_id), ... ); CREATE INDEX idx_munkalap_lepes_munkalap_id ON munkalap_lepes (munkalap_id); ทำไมไม่มีดัชนีใน munkalap_id ที่ใช้ในการสืบค้นต่อไปนี้? EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id); QUERY PLAN Hash …

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