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

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

5
เหตุใดการล็อกในแง่ดีจึงเร็วกว่าการล็อกในแง่ร้าย
การล็อกทั้งสองรูปแบบทำให้กระบวนการรอสำเนาบันทึกที่ถูกต้องหากกระบวนการอื่นกำลังใช้งานอยู่ กลไกล็อคนั้นมาจากฐานข้อมูล DB (วัตถุล็อคพื้นเมือง) ในขณะที่การล็อคในแง่ดีกลไกการล็อคเป็นรูปแบบของการกำหนดเวอร์ชันของแถวเหมือนเวลาประทับเพื่อตรวจสอบว่าบันทึกนั้นเป็น "เก่า" หรือไม่ แต่ทั้งคู่ทำให้กระบวนการที่ 2 หยุดทำงาน ดังนั้นฉันจึงถามว่า: ทำไมการล็อคแง่ดีโดยทั่วไปถือว่าเร็วกว่าการล็อคในแง่ร้าย และมีกรณีการใช้งานที่ต้องการมองโลกในแง่ร้ายมากกว่าแง่ดีหรือไม่? ขอบคุณล่วงหน้า!

2
อะไรคือความแตกต่างระหว่าง SQL I / O Sim และเครื่องมือ SQL IO?
ฉันต้องการทดสอบทางเลือกอื่นของ SQL Server ด้วยเครื่องมือเปรียบเทียบ ฉันพบเครื่องมือสองอย่างโดย Microsoft: เครื่องมือมาตรฐานระบบย่อยของดิสก์ SQLIO SQL IO Sim ความแตกต่างระหว่างพวกเขาคืออะไร? มันเป็นสิ่งเดียวกันหรือไม่ ขอบคุณ!

1
Amazon RDS MySQL 5.5 Innodb Lock timeout เกินกำหนดแล้ว
นับตั้งแต่เราย้ายไปที่ Amazon RDS เรามีปัญหาเรื่องประสิทธิภาพที่ค่อนข้างบ้าคลั่งและวันนี้เราเริ่มมีปัญหาการล็อค ด้วยเหตุนี้ฉันจึงพบว่ามันเป็นปัญหาการหมดเวลาและไปตรวจสอบหน่วยความจำที่เราใช้ เราแลกเปลี่ยนกันได้ประมาณ 70MB ฉันไปที่หน่วยความจำแม่มดล่าสัตว์กับ mysqltuner และมันบอกว่าการใช้หน่วยความจำสูงสุดประมาณ 400% เป็นไปได้ ตอนนี้ฉันได้ลดลงเหลือเพียงเล็กน้อย> 100% ขอบคุณตัวช่วยสร้างการกำหนดค่าของ Percona อย่างไรก็ตามเรายังคงมีปัญหาการล็อคนี้ดังนั้นฉันคิดว่ามันไม่เกี่ยวข้องกับหน่วยความจำ / การแลกเปลี่ยน ทำไมฉันยังคงได้รับการล็อค เกิดอะไรขึ้นที่นี่? ฉันมั่นใจว่าการรีบูตจะแก้ปัญหาได้ แต่นั่นไม่ควรเป็นวิธีแก้ปัญหา เราจะทำอย่างไรเพื่อป้องกันปัญหานี้ในอนาคต ฉันพยายามล้างแคชแบบสอบถามและตาราง - ใช้งานได้ ฟลัชประเภทอื่นไม่ทำงานขอบคุณ RDS: / นี่คือความมั่งคั่งของข้อมูลที่ฉันคิดได้: QUERY INSERT INTO `myTable` (`firstName`, `lastName`, `email`) VALUES ('Travis', 'B...', '...@gmail.com') ข้อความผิดพลาด Lock wait timeout exceeded; try restarting transaction …

3
mysql ใช้เวลาในการส่งข้อมูลนานเกินไป
ฉันมีตารางง่าย ๆ ที่มีล้านเรคคอร์ด (14,000,000) และสำหรับเคียวรี่ธรรมดา ๆ มันใช้เวลามากเกินไปในการ "ส่งข้อมูล" โต๊ะ CREATE TABLE IF NOT EXISTS details ( id int(11) NOT NULL, date date NOT NULL, time int(2) NOT NULL, minutes_online decimal(5,0) NOT NULL, minutes_playing decimal(5,0) NOT NULL, minutes_chatting decimal(5,0) NOT NULL, minutes_away decimal(5,0) NOT NULL PRIMARY KEY (id,date,time) ) ENGINE=MyISAM DEFAULT …

2
ประสิทธิภาพช้าแทรกแถวน้อยลงในตารางขนาดใหญ่
เรามีกระบวนการที่ใช้ข้อมูลจากร้านค้าและอัปเดตตารางสินค้าคงคลังทั่วทั้ง บริษัท ตารางนี้มีแถวสำหรับทุกร้านค้าตามวันที่และตามรายการ ที่ลูกค้าที่มีร้านค้ามากมายตารางนี้จะมีขนาดใหญ่มาก - ตามลำดับ 500 ล้านแถว โดยทั่วไปกระบวนการอัปเดตคลังโฆษณานี้จะเรียกใช้หลายครั้งต่อวันเนื่องจากร้านค้าป้อนข้อมูล สิ่งเหล่านี้เรียกใช้การอัพเดทข้อมูลจากร้านค้าเพียงไม่กี่แห่ง อย่างไรก็ตามลูกค้าสามารถเรียกใช้สิ่งนี้เพื่ออัปเดต, พูดว่า, ร้านค้าทั้งหมดใน 30 วันที่ผ่านมา ในกรณีนี้กระบวนการหมุน 10 เธรดและอัปเดตคลังเก็บของแต่ละร้านในเธรดแยกต่างหาก ลูกค้าร้องเรียนว่ากระบวนการใช้เวลานาน ฉันได้ทำโพรเซสและพบว่ามีหนึ่งแบบสอบถามที่ INSERT ในตารางนี้ใช้เวลานานกว่าที่คาดไว้ บางครั้ง INSERT นี้จะเสร็จสมบูรณ์ใน 30 วินาที เมื่อฉันรันคำสั่ง ad-hoc SQL INSERT กับตารางนี้ (ล้อมรอบด้วย BEGIN TRAN และ ROLLBACK), ad-hoc SQL จะทำงานให้เสร็จสมบูรณ์ตามลำดับมิลลิวินาที ข้อความค้นหาที่ทำงานช้าอยู่ด้านล่าง แนวคิดคือการบันทึก INSERT ที่ไม่ได้อยู่ที่นั่นและภายหลังเพื่อปรับปรุงพวกเขาในขณะที่เราคำนวณบิตของข้อมูล ขั้นตอนก่อนหน้าในกระบวนการระบุรายการที่จำเป็นต้องได้รับการปรับปรุงทำการคำนวณบางอย่างและยัดผลลัพธ์ลงในตาราง tempdb Update_Item_Work กระบวนการนี้ทำงานใน 10 เธรดแยกกันและแต่ละเธรดมี …

2
ฉันจะรับแผนปฏิบัติการสำหรับมุมมองได้อย่างไร
ฉันมีสคีมาพร้อมจำนวนการดู ฉันต้องตรวจสอบแผนการดำเนินการเพื่อให้แน่ใจว่ามีการใช้ดัชนีที่เหมาะสมและถูกต้องหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันไม่ต้องการคัดลอกและวางผลลัพธ์จากshow create view <viewname>ลงในexplainโดยเฉพาะอย่างยิ่งเนื่องจากบางมุมมองถูกสร้างขึ้นจากมุมมองอื่นและนี่อาจเป็นความเจ็บปวด

4
การช่วงชิง DDL บน TempDB
ฉันมี SQL Server 2005 Standard x64 ที่ประสบปัญหากับการช่วงชิงการแข่งขัน DDDB ของ TempDB ในช่วงสองสามเดือนที่ผ่านมา เซิร์ฟเวอร์จะได้รับการช่วงชิงทรัพยากรรอ 2: 1: 103 (ประเภทรอเป็น PAGELATCH_EX) ปัญหานี้เกิดขึ้นเป็นระยะ ๆ เมื่อเซิร์ฟเวอร์อยู่ในช่วงโหลดที่เหมาะสม ฉันได้ตรวจสอบอัตรา "ตารางชั่วคราวสำหรับการทำลาย" และสามารถข้ามไปที่ 5,000+ ในช่วงเวลาที่เรามีปัญหาของ PAGELATCH_EX ใน 2: 1: 103 จากสิ่งที่ฉันได้อ่านตัวนับนี้ควรเป็น 0 เวลาส่วนใหญ่ แต่ดูเหมือนว่าพวกเราจะอยู่ที่ใดก็ได้ตั้งแต่ 300-1100 ส่วนใหญ่ ตัวนับจะไปที่ 0 เมื่อมีผู้ใช้น้อยมากในระบบ ฉันจะแคบลงสิ่งที่ทำให้เกิดการแข่งขัน DDL ใน tempdb โดยไม่ต้องมองหาเข็มในกองหญ้าแห้งได้อย่างไร

3
MySQL ประสิทธิภาพสูงสำหรับการเลือกจำนวนมาก / INSERTs / UPDATEs / DELETEs
ฉันกำลังสร้างโมดูลที่ผู้ใช้ทุกคนมักจะได้รับการบันทึกลงในตารางเป็นเวลา 10 ถึง 300 วินาที เมื่อเวลาหมดอายุบันทึกจะถูกลบ กรณีคือ: จะมีผู้ใช้จำนวนมากและเรคคอร์ดจะเปลี่ยนแปลงบ่อยมาก - สิ่งนี้จะส่งผลต่อประสิทธิภาพของแอปพลิเคชั่นสำหรับตารางนี้อย่างไรเพราะเรคคอร์ดจะเปลี่ยนบ่อยมากและฉันสงสัยว่า mysql ดีกับมันหรือไม่? เช่นเดียวกับดัชนีที่จะมาและไปข้อมูลจะเปลี่ยนไปเช่น 200 ครั้ง / วินาทีสำหรับตารางนี้ บางทีฉันอาจเลือกวิธีที่ไม่ดีสำหรับงานประเภทนี้ ข้อเสนอแนะใด ๆ ขอบคุณ!

4
ฉันจะเพิ่มประสิทธิภาพการสืบค้น MySQL นี้เพิ่มเติมได้อย่างไร
ฉันมีคำถามที่ใช้เวลานานในการรัน (15+ วินาที) และยิ่งแย่ลงเมื่อเวลาผ่านไปเมื่อชุดข้อมูลของฉันเติบโต ฉันเคยปรับปรุงสิ่งนี้ในอดีตและได้เพิ่มดัชนีการเรียงลำดับระดับโค้ดและการเพิ่มประสิทธิภาพอื่น ๆ แต่ก็ต้องมีการปรับแต่งเพิ่มเติม SELECT sounds.*, avg(ratings.rating) AS avg_rating, count(ratings.rating) AS votes FROM `sounds` INNER JOIN ratings ON sounds.id = ratings.rateable_id WHERE (ratings.rateable_type = 'Sound' AND sounds.blacklisted = false AND sounds.ready_for_deployment = true AND sounds.deployed = true AND sounds.type = "Sound" AND sounds.created_at > "2011-03-26 21:25:49") GROUP …

2
การแสดงแผนแบบสอบถามใน Server Management Studio
คำถามอื่นเกี่ยวกับเซิร์ฟเวอร์ SQL: ฉันมีคำถามง่ายๆที่ให้ CPU ที่ใช้ CPU มากที่สุดตั้งแต่ตัวนับถูกรีเซ็ต: select top 10 sum(qs.total_worker_time) as total_cpu_time, sum(qs.execution_count) as total_execution_count, qs.plan_handle, st.text from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.plan_handle) as st group by qs.plan_handle, st.text order by sum(qs.total_worker_time) desc คำถามที่ 1: สิ่งที่แน่นอนคือplan_handle? ดูเหมือนว่าจะไม่มีการแฮชของแผนเหมือนใน Oracle ฉันถามเพราะฉันต้องการให้สามารถตรวจสอบสถานการณ์ที่แผนของคำสั่งมีการเปลี่ยนแปลง คำถามที่ 2: เมื่อฉันมีแผนมือจับฉันสนใจแผนจริง ดังนั้นฉันทำเช่น: select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000) ในคอลัมน์ …

2
วิธีการนำเพจจิ้งไปใช้อย่างมีประสิทธิภาพ?
ฉันมีแบบสอบถามฐานข้อมูลซึ่งอาจส่งผลให้ชุดผลลัพธ์ขนาดใหญ่ ลูกค้าที่แสดงข้อมูลได้รับข้อมูลผ่านเครือข่ายดังนั้นแนวคิดก็คือการลดจำนวนข้อมูลที่ถ่ายโอนให้น้อยที่สุดโดยการดึงผลลัพธ์ 50 รายการแรกจากฐานข้อมูลและส่งไปยังลูกค้า จากนั้นฉันจะให้ความเป็นไปได้ที่จะข้ามไปยังหน้าสองเพื่อดึงผลลัพธ์ 50 รายการถัดไปเป็นต้น (คล้าย ๆ กับข้อเสนอของ Google) คำถามคือวิธีที่มีประสิทธิภาพในการใช้เพจจิ้ง ฉันต้องการตรวจสอบให้แน่ใจว่า mssql ใช้แคชมากที่สุดเท่าที่จะเป็นไปได้และไม่ดำเนินการเดียวกันอีกครั้งทุกครั้งที่ฉันเปลี่ยนเพจ มีลูกค้าจำนวนมากที่กำลังสืบค้นฐานข้อมูลในเวลาเดียวกัน โปรแกรม sql ที่ใช้: MS SQL 2005 ความคิดของฉันคือ: ใช้ statemenst ของ sql ที่เตรียมไว้เพื่อให้แน่ใจว่ามีการแชร์แผนปฏิบัติการ ใช้ตัวแปร ROW_COUNT เพื่อดึงเฉพาะแถวที่ต้องการ แต่มันเป็นวิธีที่มีประสิทธิภาพที่สุดจริง ๆ หรือ? หรือคุณคิดว่าจะเป็นการดีกว่าที่จะดึงชุดผลลัพธ์ทั้งหมดและนำเพจจิ้งไปใช้ในโค้ดที่ส่งข้อมูลไปให้ลูกค้า ขอบคุณสำหรับเคล็ดลับ! ขอแสดงความนับถือโทมัส

3
Oracle Instances หลายตัว - นี่เป็นการปฏิบัติที่ดีหรือไม่?
หนึ่งในลูกค้าของฉันได้ปรับใช้ฐานข้อมูลผลิตภัณฑ์ของเราลงในเครื่อง Solaris ซึ่งมีอินสแตนซ์ของ Oracle อยู่ 3 อินสแตนซ์ ดังนั้นตอนนี้มี Oracle 4 อินสแตนซ์ที่ทำงานบนเครื่องเดียวกัน และตอนนี้เรากำลังประสบปัญหาประสิทธิภาพ ฉันไม่สามารถเข้าถึงอินสแตนซ์อื่นหรือเครื่องและเครื่องมือทั้งหมดที่ฉันมีคือ alert.log, AWR และ ADDM ฉันรู้ว่ามีบางอย่างเกี่ยวข้องกับหลายกรณี แต่ฉันไม่สามารถพิสูจน์ได้ ดังนั้นคำถามของฉันคือคุณเคยประสบสถานการณ์คล้ายกันหรือไม่? ฉันจะจัดการกับมันได้อย่างไร ฉันจะระบุสาเหตุของปัญหาด้านประสิทธิภาพที่เกี่ยวข้องกับหลายอินสแตนซ์ได้อย่างไร

4
จะปรับปรุงประสิทธิภาพของ InnoDB DELETE ได้อย่างไร
ดังนั้นฉันมีตารางการตรวจสอบนี้ (ติดตามการดำเนินการในตารางใด ๆ ในฐานข้อมูลของฉัน): CREATE TABLE `track_table` ( `id` int(16) unsigned NOT NULL, `userID` smallint(16) unsigned NOT NULL, `tableName` varchar(255) NOT NULL DEFAULT '', `tupleID` int(16) unsigned NOT NULL, `date_insert` datetime NOT NULL, `action` char(12) NOT NULL DEFAULT '', `className` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `userID` (`userID`), KEY …

2
ใน Google App Engine รูปแบบการเข้าร่วมแบบกลุ่มต่อกลุ่มที่มีประสิทธิภาพมากที่สุดคืออะไร
การออกแบบBigTable นั้นปฏิเสธปรัชญาหลายประการของโมเดลเชิงสัมพันธ์มาตรฐานซึ่งเลือกที่จะทำให้ denormalization เป็นโฮสต์ขนาดใหญ่ของโต๊ะตัวเล็ก ๆ อย่างชัดเจน หนึ่งในพื้นที่ที่มีขนาดใหญ่กว่าซึ่งปัญหานี้อยู่ในการสร้างแบบจำลองของหลายคนเข้าร่วมจำนวนมาก วิธีหนึ่งในการสร้างโมเดลการรวมเหล่านี้คือการละเมิดรูปแบบปกติแรกและนำข้อมูลที่น่าสนใจทั้งหมดใน db.ListProperty () ขณะนี้มีความสามารถในการค้นหาได้จากแบบสอบถามฉันยังไม่ได้สำรวจความหมายของประสิทธิภาพของการค้นหารายการเทียบกับการดึงตารางอื่น เนื่องจากการเชื่อมโยงเป็นไปไม่ได้จึงเป็นไปได้ที่จะเชื่อมโยงตารางผ่าน RelationshipProperties ดังนั้นด้วยความพยายามที่เพียงพอตารางจุดตัดมาตรฐาน (ตารางที่มีคีย์หลักร่วมซึ่งอ้างอิงตารางหลักทั้งสอง) สามารถสร้างได้ มีใครสำรวจประสิทธิภาพการทำงานของการใช้งานที่หลากหลาย? -Edit- ในขณะที่รายการของคีย์ที่แนะนำในเอกสารเป็นจริงวิธีหนึ่งที่จะทำมันฉันสนใจในประสิทธิภาพและอัตราความผิดปกติของที่และการใช้งานอื่น ๆ มีประโยชน์ในการสร้างรายการคีย์ร่วมกันหรือไม่? ความพยายามที่เกี่ยวข้องกับการทำซ้ำได้รับคุ้มราคาหรือไม่ มีวิธีที่ดีกว่าที่จะทำหรือไม่

3
บัญชีบริการเดียวที่ใช้งานเซิร์ฟเวอร์ SQL ทั้งหมด
มีผลกระทบด้านลบต่อประสิทธิภาพการใช้บัญชีบริการและบัญชีตัวแทนเดียวกันเพื่อเรียกใช้ SQL Server และตัวแทน SQL ตามลำดับสำหรับอินสแตนซ์เซิร์ฟเวอร์ SQL ทั้งหมดที่ทำงานใน บริษัท ขนาดเล็กที่มีเซิร์ฟเวอร์ 35 ตัวหรือไม่ ฐานข้อมูลที่ใหญ่ที่สุดคือ 0.5 GB ข้อเสนอแนะใด ๆ ยินดีต้อนรับ ขอบคุณ.

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