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

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

2
ตรวจสอบการมีอยู่ของ EXISTS ดีกว่า COUNT! …ไม่
ฉันได้อ่านบ่อยเมื่อมีการตรวจสอบการดำรงอยู่ของแถวควรเสมอทำได้ด้วย EXISTS แทนกับการนับ แต่ในหลายสถานการณ์ที่ผ่านมาฉันได้วัดการปรับปรุงประสิทธิภาพเมื่อใช้การนับ รูปแบบเป็นไปดังนี้: LEFT JOIN ( SELECT someID , COUNT(*) FROM someTable GROUP BY someID ) AS Alias ON ( Alias.someID = mainTable.ID ) ฉันไม่คุ้นเคยกับวิธีการที่จะบอกว่าเกิดอะไรขึ้น "ภายใน" SQL Server ดังนั้นฉันจึงสงสัยว่ามีข้อผิดพลาดที่ไม่มีผู้แปลที่มี EXISTS ที่ให้ความรู้สึกที่สมบูรณ์แบบกับการวัดที่ฉันทำ คุณมีคำอธิบายเกี่ยวกับปรากฏการณ์นั้นบ้างไหม? แก้ไข: นี่คือสคริปต์เต็มรูปแบบที่คุณสามารถเรียกใช้: SET NOCOUNT ON SET STATISTICS IO OFF DECLARE @tmp1 TABLE ( ID INT UNIQUE …

1
การใช้คำสั่ง build ใน JOIN สามารถแนะนำอุปสรรคการเพิ่มประสิทธิภาพได้ในบางกรณี?
ฉันได้รับความสนใจว่าการUSINGสร้าง (แทนON) ในส่วนFROMคำSELECTสั่งอาจทำให้เกิดปัญหาและอุปสรรคในการเพิ่มประสิทธิภาพในบางกรณี ฉันหมายถึงคำสำคัญนี้: เลือก * จาก เข้าร่วมขโดยใช้ (a_id) ในกรณีที่ซับซ้อนมากขึ้น บริบท: ความคิดเห็นสำหรับคำถามนี้ ฉันใช้สิ่งนี้มากและไม่เคยสังเกตเห็นอะไรเลย ฉันสนใจกรณีทดสอบที่แสดงให้เห็นถึงผลกระทบหรือลิงก์ใด ๆไปยังข้อมูลเพิ่มเติม ความพยายามในการค้นหาของฉันว่างเปล่า คำตอบที่สมบูรณ์แบบจะเป็นกรณีทดสอบเพื่อแสดงUSING (a_id)ด้วยประสิทธิภาพที่ต่ำกว่าเมื่อเปรียบเทียบกับข้อเข้าร่วมทางเลือกON a.a_id = b.a_id- ถ้านั่นสามารถเกิดขึ้นได้จริง

4
ฉันควรเพิ่มขีดจำกัดความยาวตามอำเภอใจในคอลัมน์ VARCHAR หรือไม่
ตามเอกสารของ PostgreSQLไม่มีความแตกต่างระหว่างประสิทธิภาพVARCHAR, และVARCHAR(n)TEXT ฉันควรเพิ่มขีดจำกัดความยาวตามอำเภอใจในคอลัมน์ชื่อหรือที่อยู่หรือไม่? แก้ไข:ไม่ใช่รายการที่: การค้นหาดัชนีจะเร็วขึ้นอย่างเห็นได้ชัดด้วย char vs varchar หรือไม่เมื่อค่าทั้งหมดเป็น 36 ตัวอักษร ฉันรู้ว่าCHARประเภทนี้เป็นของที่ระลึกในอดีตและฉันไม่เพียง แต่สนใจในการแสดงเท่านั้น

2
เรียงตามคอลัมน์ควรมีดัชนีหรือไม่
ฉันได้เพิ่มดัชนีในตารางซึ่งใช้สำหรับผลการค้นหา ฉันกำลังแสดงผลลัพธ์ตามลำดับ ASC หรือ DESC ดังนั้นคอลัมน์นั้นควรมีดัชนีหรือไม่? ฉันมีอีก 2 ดัชนีในตารางนั้น ประสิทธิภาพจะมีผลต่อการสร้างดัชนีหรือไม่สร้างดัชนีในคอลัมน์นั้น

1
GO หลังจากทุกคำสั่ง T-SQL
เหตุผลเบื้องหลังการใช้คำสั่ง GO หลังจากทุกคำสั่ง SQL คืออะไร ฉันเข้าใจว่า GO ส่งสัญญาณการสิ้นสุดของแบทช์และ / หรืออนุญาตให้มีชื่อเสียงของข้อความ แต่สิ่งที่มันมีประโยชน์ใช้หลังจากทุกคำสั่ง ฉันแค่อยากรู้อยากเห็นเป็นเอกสาร Microsoft จำนวนมาก ฯลฯ ได้เริ่มใช้มันหลังจากทุกคำสั่งหรือบางทีฉันเพิ่งเริ่มสังเกตเห็น นอกจากนี้สิ่งที่ถือว่าเป็นแนวปฏิบัติที่ดีที่สุด

4
ประสิทธิภาพของเซิร์ฟเวอร์ SQL ช้าลงหลังจากจัดสรร CPU และ RAM เพิ่มเติม
เรามี SQL Server 2008 R2 (10.50.1600) ที่ทำงานบนเซิร์ฟเวอร์ Windows 2008 R2 เสมือน หลังจากอัปเกรด CPU จาก 1 คอร์เป็น 4 และแรมจาก 4 gb เป็น 10 gb เราได้สังเกตเห็นว่าประสิทธิภาพแย่ลง ข้อสังเกตบางอย่างที่ฉันเห็น: ข้อความค้นหาที่ใช้เวลา <5 วินาทีในการทำงาน> 200 วินาที ซีพียูถูกตรึงที่ 100 กับ sqlservr.exe เป็นผู้ร้าย จำนวนที่เลือก (*) บนตารางที่มี 4.6 ล้านแถวใช้เวลามากกว่า 90 วินาที กระบวนการที่ทำงานบนเซิร์ฟเวอร์ไม่ได้เปลี่ยนแปลง การเปลี่ยนแปลงเพียงอย่างเดียวคือการเพิ่มซีพียูและแรม เซิร์ฟเวอร์ sql อื่นมีไฟล์เก็บเพจแบบสแตติกซึ่งเซิร์ฟเวอร์นี้ถูกตั้งค่าให้จัดการด้วยตนเอง มีใครประสบปัญหานี้มาก่อนหรือไม่ ต่อ sp_Blitz …

3
ประสิทธิภาพของ CPU นั้นเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่
นี่เป็นคำถามเชิงทฤษฎีอย่างแท้จริง สมมติว่าฉันมีแอปพลิเคชันที่ปรับใช้บนเซิร์ฟเวอร์หลายเครื่อง เครื่องถ่วงโหลด เซิร์ฟเวอร์แอพพลิเคชั่นหลายตัว / ปรับขนาดได้ เซิร์ฟเวอร์ฐานข้อมูล A (เดี่ยว) (ในขณะนี้) ในสองส่วนแรกฉันรู้ว่าต้องหาอะไร แต่เซิร์ฟเวอร์ฐานข้อมูลล่ะ ฉันควรมองหาฮาร์ดแวร์ชนิดใด ความถี่ซีพียูเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่ ซีพียูหลายคอร์มีความเกี่ยวข้องหรือไม่? RAM สำคัญกว่า CPU หรือไม่ PS: หากว่าฐานข้อมูลที่เลือกคือ MySQL หรือ PostgreSQL

5
เหตุใดจึงเลือกอย่างง่ายบน InnoDB 100x ช้ากว่าบน MyISAM
ฉันมีปัญหาค่อนข้างน่ารำคาญ ฉันต้องการใช้ INNODB เป็นเอ็นจิ้นฐานข้อมูลหลักของฉันและยอมแพ้กับ MyISAM เพราะฉันต้องการรุ่นเก่าสำหรับการใช้ galera-cluster เพื่อความซ้ำซ้อน ฉันคัดลอก (คำอธิบายด้านล่าง) newbb_postตารางเป็นตารางใหม่ที่เรียกว่าnewbb_innopostและเปลี่ยนเป็น InnoDB ขณะนี้ตารางเก็บ5,390,146ข้อมูลแต่ละรายการ การรันตัวเลือกเหล่านี้บนฐานข้อมูลที่เพิ่งเริ่มต้นใหม่ (ดังนั้นจึงไม่มีการแคชใด ๆ เกี่ยวข้องในจุดนี้!) ฐานข้อมูลให้ผลลัพธ์ต่อไปนี้ (ไม่แสดงผลลัพธ์ทั้งหมดโปรดทราบว่าฉันไม่ได้ขอให้ฐานข้อมูลเรียงลำดับผลลัพธ์): เลือก post.postid, post.attach จาก newbb_post เป็นโพสต์ WHERE post.threadid = 51506; . . | 5401593 | 0 | | 5401634 | 0 | + --------- + -------- + 62510 แถวในชุด (0.13 วินาที) …

1
ประสิทธิภาพที่แปลกประหลาดมากกับดัชนี XML
คำถามของฉันเป็นไปตามนี้: https://stackoverflow.com/q/35575990/5089204 เพื่อให้คำตอบนั้นฉันได้ทำการทดสอบสถานการณ์ต่อไปนี้ สถานการณ์การทดสอบ ก่อนอื่นฉันจะสร้างตารางทดสอบและเติมเต็ม 100.000 แถว ตัวเลขสุ่ม (0 ถึง 1,000) ควรนำไปสู่ ​​~ 100 แถวสำหรับแต่ละหมายเลขสุ่ม หมายเลขนี้ถูกใส่ในคอลัมน์ varchar และเป็นค่าใน XML ของคุณ จากนั้นฉันจะโทรเช่น OP มีความต้องการด้วย. exist () และ. nodes () โดยมีข้อได้เปรียบเล็กน้อยสำหรับวินาที แต่ทั้งคู่ใช้เวลา 5 ถึง 6 วินาที ในความเป็นจริงฉันทำการโทรสองครั้ง: ครั้งที่สองในลำดับที่สลับกันและเปลี่ยนการค้นหาเล็กน้อยและใช้ "// item" แทนพา ธ เต็มเพื่อหลีกเลี่ยงผลบวกปลอมผ่านผลลัพธ์หรือแผนแคช จากนั้นฉันจะสร้างดัชนี XML และทำการโทรเดียวกัน ตอนนี้ - อะไรทำให้ฉันประหลาดใจจริงๆ! - the .nodeswith …

6
วิธีอัปเดต 10 ล้านแถวใน MySQL ตารางเดียวเร็วที่สุด
ใช้ MySQL 5.6 กับเครื่องมือจัดเก็บข้อมูล InnoDB สำหรับตารางส่วนใหญ่ ขนาดบัฟเฟอร์พูล InnoDB คือ 15 GB และดัชนี Innodb DB + มีขนาดประมาณ 10 GB เซิร์ฟเวอร์มี RAM 32GB และใช้งาน Cent OS 7 x64 ฉันมีตารางใหญ่หนึ่งตารางที่มีเร็กคอร์ดประมาณ 10 ล้านรายการ ฉันได้รับไฟล์ดัมพ์ที่อัปเดตจากเซิร์ฟเวอร์ระยะไกลทุก 24 ชั่วโมง ไฟล์อยู่ในรูปแบบ csv ฉันไม่สามารถควบคุมรูปแบบนั้นได้ ไฟล์นี้มีขนาด ~ 750 MB ฉันพยายามแทรกข้อมูลลงในตาราง MyISAM แบบแถวต่อแถวและใช้เวลา 35 นาที ฉันต้องใช้เพียง 3 ค่าต่อบรรทัดจาก 10-12 จากไฟล์และอัปเดตในฐานข้อมูล อะไรคือวิธีที่ดีที่สุดในการบรรลุสิ่งนี้ …

3
มันเป็นความคิดที่ดี / วิธีการจัดทำดัชนีคอลัมน์ VARCHAR?
เรากำลังใช้ PostgreSQL v8.2.3 มีตารางที่เกี่ยวข้อง: พนักงานและEMAILLIST Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6) Table 2: EMAILLIST (email) มีการรวม 2 ตารางเข้าด้วยกันซึ่งหาก EMPLOYEE.EMAIL1 หรือ EMPLOYEE.EMAIL2 ไม่ได้เข้าคู่กันแถวเหล่านั้นจะถูกส่งกลับ SELECT employee.email1, employee.email2, e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched FROM employee LEFT JOIN emaillist e1 ON e1.email = employee.email1 …

3
ทำไม SQL Server ใช้แผนการดำเนินการที่ดีขึ้นเมื่อฉันอินไลน์ตัวแปร
ฉันมีแบบสอบถาม SQL ที่ฉันพยายามปรับให้เหมาะสม: DECLARE @Id UNIQUEIDENTIFIER = 'cec094e5-b312-4b13-997a-c91a8c662962' SELECT Id, MIN(SomeTimestamp), MAX(SomeInt) FROM dbo.MyTable WHERE Id = @Id AND SomeBit = 1 GROUP BY Id MyTable มีสองดัชนี: CREATE NONCLUSTERED INDEX IX_MyTable_SomeTimestamp_Includes ON dbo.MyTable (SomeTimestamp ASC) INCLUDE(Id, SomeInt) CREATE NONCLUSTERED INDEX IX_MyTable_Id_SomeBit_Includes ON dbo.MyTable (Id, SomeBit) INCLUDE (TotallyUnrelatedTimestamp) เมื่อฉันดำเนินการแบบสอบถามตรงตามที่เขียนไว้ข้างต้น SQL Server …

4
ความเร็วสัญญาณนาฬิกาของ CPU เทียบกับจำนวนแกนประมวลผลหลัก - สูงกว่า GHz หรือแกนประมวลผลเพิ่มเติมสำหรับ SQL Server
เราเริ่มเตรียมชุดฟิสิคัลเซิร์ฟเวอร์สำหรับคลัสเตอร์เสมือนของโหนด SQL Server 2016 ภายใน VMware เราจะใช้สิทธิ์การใช้งาน Enterprise Edition เราวางแผนที่จะตั้งค่า 6 โหนด แต่มีการถกเถียงกันเล็กน้อยเกี่ยวกับวิธีที่เหมาะสมที่สุดในการจัดเตรียมเซิร์ฟเวอร์ทางกายภาพที่เกี่ยวกับความเร็วสัญญาณนาฬิกาของ CPU เทียบกับจำนวนหลักของ CPU ฉันรู้ว่าส่วนใหญ่ขึ้นอยู่กับปริมาณธุรกรรมและจำนวนฐานข้อมูลที่เก็บไว้ในปัจจัยเฉพาะซอฟต์แวร์อื่น ๆ แต่มีกฎทั่วไปที่แนะนำหรือไม่ ตัวอย่างเช่นเซิร์ฟเวอร์ฟิสิคัลแบบ dual-core 8-core, 3.2 GHz (16 คอร์) เป็นสิทธิพิเศษสำหรับเซิร์ฟเวอร์ 16-core, 16 GHz แบบคู่ 16 แกน (32 คอร์) หรือไม่? มีใครบ้างที่พบกระดาษสีขาวที่นำเสนอหัวข้อประเภทนี้เพิ่มเติมหรือไม่

1
การค้นหาดัชนีจะเร็วขึ้นอย่างเห็นได้ชัดด้วย char vs varchar หรือไม่เมื่อค่าทั้งหมดเป็น 36 ตัวอักษร
ฉันมีแบบแผนดั้งเดิม (ข้อจำกัดความรับผิดชอบ!) ที่ใช้รหัสที่สร้างโดยใช้แฮชสำหรับคีย์หลักสำหรับตารางทั้งหมด (มีจำนวนมาก) ตัวอย่างของ ID ดังกล่าวคือ: 922475bb-ad93-43ee-9487-d2671b886479 ไม่มีความหวังที่เป็นไปได้ในการเปลี่ยนวิธีการนี้อย่างไรก็ตามประสิทธิภาพของการเข้าถึงดัชนีนั้นไม่ดี การตั้งค่ากันมากมายเหตุผลนี้อาจจะมีสิ่งหนึ่งที่ผมสังเกตเห็นว่าดูเหมือนน้อยกว่าที่ดีที่สุด - แม้จะมีค่า ID ทั้งหมดในตารางมากทั้งหมดเป็นว่า 36 ตัวอักษรความยาวชนิดคอลัมน์varchar(36), ไม่ char(36) การเปลี่ยนประเภทคอลัมน์เป็นความยาวคงที่จะchar(36)ให้ประโยชน์ด้านดัชนีอย่างมีนัยสำคัญหรือไม่นอกเหนือจากการเพิ่มจำนวนรายการต่อหน้าดัชนีเป็นต้น? คือ postgres ทำงานเร็วกว่ามากเมื่อจัดการกับประเภทความยาวคงที่มากกว่าประเภทความยาวผันแปรหรือไม่ โปรดอย่าพูดถึงการประหยัดพื้นที่เก็บข้อมูลขนาดจิ๋ว - ไม่เป็นไรเมื่อเทียบกับการผ่าตัดที่จำเป็นในการเปลี่ยนแปลงคอลัมน์

5
ไกลแค่ไหนที่คุณควรไปกับการฟื้นฟู
ฉันมีจำนวนข้อมูลที่เหมาะสมในฐานข้อมูล ฉันสร้างตารางอย่างดีและมีความสัมพันธ์ที่ดีระหว่างกันโดยมีความซ้ำซ้อนในข้อมูลของฉัน แต่ฉันจะไปกับการฟื้นฟูได้ไกลแค่ไหน? มีข้อเสียของการปรับมาตรฐานมากเกินไปหรือไม่?

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