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

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

2
innodb_flush_method = O_DIRECT vs O_DSYNC ผลกระทบต่อประสิทธิภาพใน ext3 กับพาร์ติชันดิสก์ LVM
ในหนึ่งในสภาพแวดล้อมการผลิตของฉันเรามีสองอินสแตนซ์ที่ทำงานบนคลัสเตอร์ RedHat โดยมีหนึ่งอินสแตนซ์การผลิตที่เกี่ยวข้องกับคลัสเตอร์ เรามีหน่วยความจำหลัก 125G พร้อมพูลบัฟเฟอร์ InnoDB 24G ซึ่งครอบครองโดย instance1 & 12G ที่ครอบครองโดย instance2 ซึ่งไม่เกี่ยวข้องกับคลัสเตอร์ RedHat ทั้งข้อมูลและบันทึกธุรกรรมอยู่บนพาร์ติชั่นดิสก์ LVM พร้อมระบบไฟล์ ext3 สำหรับการเพิ่มประสิทธิภาพการทำงานที่ดีขึ้นและ I / O throughput ที่ฉันได้ตัดสินใจที่จะเปลี่ยนแปลงไปinnodb_flush_methodO_DIRECT อ้างอิงจากเอกสารของ MySQL: ที่ข้อมูล InnoDB และไฟล์เข้าสู่ระบบตั้งอยู่บน SAN จะได้รับพบว่าการตั้งค่าinnodb_flush_methodเพื่อO_DIRECTประสิทธิภาพสามารถลดง่ายSELECTงบโดยปัจจัยที่สาม หมายถึงการที่มีประสิทธิภาพสูง MySQL Ver 2 และ 3 มันบอกว่านักพัฒนา InnoDB innodb_flush_method=O_DSYNCพบข้อบกพร่องเกี่ยวกับการใช้ O_SYNCและO_DSYNCคล้ายกับfsync()และfdatasync(): O_SYNCซิงค์ทั้งข้อมูลและเมตาดาต้าในขณะที่O_DSYNCซิงค์ข้อมูลเท่านั้น ถ้านั่นดูเหมือนคำอธิบายมากมายโดยไม่มีคำแนะนำนี่คือคำแนะนำ: ถ้าคุณใช้ระบบปฏิบัติการยูนิกซ์เหมือนระบบปฏิบัติการและควบคุม RAID ของคุณมี writecache O_DIRECTแบตเตอรี่สำรองเราขอแนะนำให้คุณใช้ …

1
พฤติกรรมของ SQL Server TempDB ในสภาพแวดล้อมของหน่วยความจำขนาดใหญ่
การอ่านคำถามนี้ทำให้ฉันนึกถึงคำถามที่ฉันได้ซักพักหนึ่งแล้ว เรามี SQL Server ที่มี RAM ขนาด 512GB ฐานข้อมูลหลักคือ 450 GB เราเห็นการกระทำค่อนข้างมากใน TempDB (ตกลงฉันคิดว่ามันเป็น "การกระทำค่อนข้างมาก" - อาจไม่ได้!) ฉันติดตั้งเซิร์ฟเวอร์ตัวอย่างของ RamDisk Plus สร้าง ramdrive 50GB ชี้ไปที่ TempDB แล้วไม่เห็นการปรับปรุงประสิทธิภาพเลย การเขียนไปที่ TempDB มักจะส่งผลให้เกิดการเขียนทางกายภาพจริงไปยังดิสก์เสมอหรือเป็น TempDB ที่เขียนโดย SQL Server สำหรับการเขียนที่ล่าช้าเช่นในแคชของระบบไฟล์ Windows ramdisk ไม่มีจุดหมายในสถานการณ์นี้หรือไม่? ฉันรู้ว่า SQL Server 6.5 ได้รับการสนับสนุนสำหรับ TempDB-In-Ram แต่ฉันเห็นว่าเลิกใช้มานานแล้ว!

2
กำลังวางธุรกรรมเข้าสู่ระบบแยกปริมาณ [สถานะของแข็ง]?
บันทึกการทำธุรกรรมมักจะแยกในปริมาณที่แยกต่างหาก เหตุผลสำหรับการปฏิบัตินี้ตามที่ฉันเข้าใจคือข้อมูลบันทึกธุรกรรมถูกเขียนเรียงตามลำดับและฮาร์ดไดรฟ์สามารถดำเนินการเขียนด้วยความเร็วที่สูงกว่าตามลำดับเมื่อเทียบกับแบบสุ่ม นี่เป็นเพราะเข็มเล็ก ๆ ในไดรฟ์ซึ่งต้องเคลื่อนที่ในระยะทางที่สั้นกว่ามากเมื่อทำการเขียนบล็อกข้อมูลตามลำดับซึ่งต่างจากการเขียนแบบสุ่ม (ขออภัยสำหรับการตีความที่ไร้เดียงสาเพียงแค่พยายามเข้าใจสิ่งที่ฉันอ่าน) เมื่อคำนึงถึงสิ่งนี้ ... มันเกิดขึ้นกับฉันที่ไดรฟ์โซลิดสเตทไม่มีเข็มและจานรองเล็ก ๆ หากทั้งฐานข้อมูลและบันทึกธุรกรรมของฉันอยู่บนไดรฟ์โซลิดสเตท RAID 5 จากแปดตัวเดียวจะมีข้อดีที่จะย้ายบันทึกธุรกรรมไปยังโวลุ่มแยกต่างหากหรือไม่? หากการเพิ่มประสิทธิภาพที่คาดคะเนขึ้นอยู่กับข้อสรุปของการเขียนตามลำดับลดระยะทางที่เข็มเคลื่อนที่และจานหมุนและไดรฟ์โซลิดสเตตไม่มีชิ้นส่วนที่เคลื่อนไหวเหล่านี้ฉันจะได้อะไรจากการแยกบันทึก

1
เหตุใด DELETE จึงช้ากว่า SELECT มากแล้วจึงลบตาม id
ฉันมีตาราง InnoDB ที่ค่อนข้างยุ่ง (200,000 แถวฉันเดาได้ว่ามีหลายสิบข้อความค้นหาต่อวินาที) เนื่องจากข้อผิดพลาดฉันได้รับ 14 แถวที่มีที่อยู่อีเมลไม่ถูกต้อง (เหมือนกัน) และต้องการลบทิ้ง ฉันลองDELETE FROM table WHERE email='invalid address'และได้รับ "เกินเวลารอการล็อค" หลังจากนั้นประมาณ 50 วินาที สิ่งนี้ไม่น่าประหลาดใจนักเนื่องจากคอลัมน์แถวไม่ได้จัดทำดัชนี อย่างไรก็ตามฉันทำSELECT id FROM table WHERE email='invalid address'และใช้เวลา 1.25 วินาที วิ่งDELETE FROM table WHERE id in (...)คัดลอกรหัสจากผลลัพธ์ SELECT ใช้เวลา 0.02 วินาที เกิดอะไรขึ้น? ใครสามารถอธิบายได้ว่าเหตุใด DELETE ที่มีเงื่อนไขจึงช้าลงจนหมดเวลา แต่การเลือก SELECT จากนั้นการลบด้วย id นั้นเร็วมาก …

2
ความแตกต่างของประสิทธิภาพ INSERT ระหว่างตารางชั่วคราวและตัวแปรตาราง
ฉันมีปัญหาดังต่อไปนี้ใน SQL Server 2005: การพยายามแทรกแถวบางแถวในตัวแปรตารางใช้เวลานานเมื่อเทียบกับการแทรกแบบเดียวกันโดยใช้ตารางชั่วคราว นี่คือรหัสที่จะแทรกลงในตัวแปรตาราง DECLARE @Data TABLE(...) INSERT INTO @DATA( ... ) SELECT .. FROM ... นี่คือรหัสที่จะแทรกลงในตารางอุณหภูมิ CREATE #Data TABLE(...) INSERT INTO #DATA( ... ) SELECT .. FROM ... DROP TABLE #Data ตารางชั่วคราวไม่มีคีย์หรือดัชนีใด ๆ ส่วนที่เลือกจะเหมือนกันระหว่าง 2 แบบสอบถามและจำนวนผลลัพธ์ที่ส่งคืนโดยการเลือกคือ ~ 10,000 แถว เวลาที่ใช้ในการดำเนินการเลือกอย่างเดียวคือ ~ 10 วินาที เวอร์ชันของ temp table ใช้เวลาในการรันสูงสุด …

3
ข้อเสนอแนะฐานข้อมูลสำหรับเครือข่ายสังคม / ชุมชนฐานความรู้?
ฉันกำลังมองหาฐานข้อมูลประเภทต่างๆและ DBMS สำหรับโครงการใหม่ที่ฉันต้องการเริ่มในช่วงฤดูร้อน ฉันได้สร้างระบบใน MySQL และ postgreSQL ตอนนี้ฉันต้องการที่จะขยายความรู้และประสบการณ์ของฉันในฐานข้อมูล โครงการของฉันจะเป็นประเภทของเครือข่ายโซเชียล / รวมความรู้ (ยังไม่ได้พัฒนาคำเพื่ออธิบายยัง) ฉันได้ดูที่: คาสซานดรา (ใช้ภาษาคิวรีของตัวเอง); ดูเหมือนว่าจะดีสำหรับเนื้อหาที่มีคุณลักษณะหลากหลายและให้การดำเนินการค้นหาที่มีประสิทธิภาพสูง อย่างไรก็ตามฉันไม่ได้กระตือรือร้นกับมันมากเกินไปเพราะมันต้องการสภาพแวดล้อมแบบจาวาเพื่อทำงานต่อและฉันก็อยากจะไม่มีอะไรเกี่ยวข้องกับออราเคิล MongoDB (noSQL ประเภทของ DBMS); ความสามารถในการขยายที่ยอดเยี่ยม แต่คุณสูญเสียความสามารถทั้งหมดที่มีอยู่แล้วในภาษา SQL ที่พิสูจน์แล้วเช่นแบบสอบถามข้อมูลธุรกิจ ข้อกำหนดของระบบ: ข้อความข้อมูล , วันที่, เวลา, xml, ints ขนาดเล็ก, หยด โครงสร้าง / พฤติกรรม : ปกติ 3NF, ไม่ใช่เรียลไทม์, สัมพันธ์, ปรับขนาดได้, แข็งแกร่ง สภาพแวดล้อม: unix / linux, ไม่มี JAVA!, …

2
พารามิเตอร์โพรซีเดอร์ที่เก็บมีจำนวนมากเกินไป?
ฉันเพิ่งเริ่มเขียนกระบวนงานที่เก็บไว้ใน SQL Server 2008 และมีพารามิเตอร์มากกว่า 30 รายการ ฉันไม่เคยเขียนหนึ่งที่มีมากกว่า 10 พารามิเตอร์และนั่นทำให้ฉันคิดว่า ... ณ จุดใดมีพารามิเตอร์มากเกินไป? สำหรับบริบท ... ขั้นตอนนี้จะต้องแทรกแถวเดียวลงในตารางเดียว ก็จะมีความคล้ายคลึงกันมาก แม้ว่าจะค่อนข้างเล็ก เวอร์ชันที่ดำเนินการUPDATEบนตารางเดียวกัน คอลัมน์ส่วนใหญ่มีขนาดค่อนข้างเล็กโดยมีการผสมผสานของ int และ strings ( varchar(200)) ปัญหาคืออะไร; ดีหรือไม่ดี การมีโพรซีเดอร์ที่มีพารามิเตอร์จำนวนมากและเกณฑ์ที่ฉันควรเริ่มพิจารณารูปแบบอื่นคืออะไร

2
การอัพเดต 700 ล้านแถวเป็นค่าเดียวกัน
ฉันมีคลังข้อมูล (oracle) ที่ฉันต้องตั้งค่าคอลัมน์เป็นค่าเดียวกันสำหรับทั้ง 700 ล้านแถว ฉันไม่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบหรือการเข้าถึงผู้ดูแลระบบดังนั้นจึงจำเป็นต้องทำให้สำเร็จด้วย sql พื้นฐานและไม่มีตาราง temp ที่สร้างขึ้น สิ่งที่ซับซ้อนกว่านั้นคือถ้าฉันพยายามทำการอัพเดทง่ายๆโดยที่ 1 = 1 มันจะหมดพื้นที่ทำซ้ำ วิธีที่ฉันให้มันทำงานตอนนี้วนซ้ำเช่นนี้: loop update mytable set mycolumn = '1' where mycolumn is null and rownum < 50000; commit; end loop แต่ฉันรู้ว่านี่อาจไร้เดียงสาและต้องมีวิธีแก้ปัญหาที่รวดเร็วและสง่างามกว่า

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

2
SQL Server: มีใครใช้ตัวเลือกการปรับแต่งการจัดสรรหน้าขนาดใหญ่?
TF834 large page allocationsมีใครใช้ตัวเลือกการปรับแต่งการใช้ ฉันเพิ่งอ่านบทความ MS เกี่ยวกับเรื่องนี้และสงสัยว่าถ้าใครเคยใช้มันและเห็นประสิทธิภาพเพิ่มขึ้น มีสิ่งใดที่ต้องระวังเคล็ดลับข้อผิดพลาดหรือไม่? เซิร์ฟเวอร์เป็น Windows 2008 64 บิต, 128 GB RAM, 4 CPU 8 core hyperthreded (รวม 64 คอร์) เซิร์ฟเวอร์ SQL2005 ฉันต้องการปรับแต่งเซิร์ฟเวอร์เพื่อใช้สเปคของมันให้ดีกว่าการใช้การติดตั้ง SQL ที่เป็นค่าเริ่มต้นที่ทำกับมันในปัจจุบัน คำแนะนำพิเศษใด ๆ จะได้รับการต้อนรับ

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

2
Postgresql 8.3: จำกัด การใช้ทรัพยากรต่อแบบสอบถาม
ฉันใช้PostgreSQL 8.3 + PostGIS 1.3ในการจัดเก็บข้อมูลเชิงพื้นที่ในอูบุนตู 8.04 Hardy PostGIS รุ่นนี้มีข้อผิดพลาดเมื่อทำการคำนวณbuffer()บนเซ็กเมนต์ที่ซับซ้อนมากซึ่งทำให้เคียวรีใช้หน่วยความจำมากขึ้นเรื่อย ๆ จนกว่าเครื่องทั้งหมดจะติด ฉันกำลังมองหากลไก PostgreSQL ที่สามารถ: จำกัด การใช้หน่วยความจำ (และอาจเป็นทรัพยากรอื่น ๆ ) ที่ใช้โดยแบบสอบถามที่เฉพาะเจาะจง หยุดคิวรีที่มีเวลาดำเนินการเกินเกณฑ์ที่กำหนดโดยอัตโนมัติ ความคิดใด ๆ

2
SQL Server 2008 - ประสิทธิภาพของฐานข้อมูลข้ามบนเครื่องจริงและอินสแตนซ์เซิร์ฟเวอร์เดียวกัน
มีประสิทธิภาพในการทำงานเมื่อทำการเลือกทั่วทั้งฐานข้อมูลอื่นบนเครื่องจริงหรือไม่? ดังนั้นฉันจึงมี 2 ฐานข้อมูลในเครื่องทางกายภาพเดียวกันที่ทำงานภายในอินสแตนซ์ SQL 2008 เดียวกัน ตัวอย่างเช่นใน SomStoreProc on_this_db ฉันเรียกใช้ SELECT someFields จาก the_other_db.dbo.someTable ไกลจากสิ่งที่ฉันได้อ่านบนอินเทอร์เน็ตคนส่วนใหญ่ดูเหมือนจะบ่งบอกว่าไม่มี

3
คุณจะล้างแผนแบบสอบถามเก่าทั้งหมดจากภายใน Microsoft SQL Server ได้อย่างไร
เรามีแอพพลิเคชั่นชั้นวางที่ใช้ฐานข้อมูล Microsoft SQL ภายในแอปพลิเคชันนี้เราเลือกและเลือกเกณฑ์การเลือกที่หลากหลายสำหรับแต่ละรายงาน แอปพลิเคชันนี้เรียกใช้รายงานเหล่านี้ ฉันเชื่อว่าเรามีปัญหาแผนแบบสอบถาม รายงานฉบับแรกที่เราเรียกใช้ในแต่ละวันทำงานเร็วมาก 7 นาที รายงานใด ๆ ที่เราเรียกใช้หลังจากรายงานแรกใช้เวลาเกินหนึ่งชั่วโมง ทุกคืนเราเรียกใช้ภารกิจที่กำหนดเวลาไว้ซึ่งหยุดและเริ่ม SQL Server Agent และ SQL Server มีฐานข้อมูลอื่นประมาณ 25 ภายใน SQL อินสแตนซ์หนึ่งนี้ ไม่มีฐานข้อมูลอื่นที่มีปัญหาด้านประสิทธิภาพเพียงอย่างเดียวที่ออกผลิตภัณฑ์ชั้นวางที่ฉันกล่าวถึงก่อนหน้านี้ มีวิธีล้างแผนการสืบค้นทั้งหมดที่ SQL Server มีอยู่ในหน่วยความจำหรือไม่? ฉันจะทำสิ่งนี้ได้อย่างไรโดยไม่กระทบกับผู้ใช้ 30 รายหรือมากกว่านั้นที่ใช้ฐานข้อมูลอื่นบนเซิร์ฟเวอร์เดียวกัน

1
ประสิทธิภาพของ polymodels เมื่อเทียบกับรุ่น Bigtable ปกติใน Google App Engine คืออะไร
อะไรที่ให้ประสิทธิภาพที่ดีที่สุดในการใช้งาน Google App Engine ปกติ polymodel หรือรุ่น "Bigtable" ปกติ? polymodel สร้างคอลัมน์ในตารางพาเรนต์ที่เรียกว่า "class" ซึ่งให้การติดตามการสืบทอดได้อย่างมีประสิทธิภาพ ในขณะที่ Bigtable ปกติสืบทอดมาจากคลาสพาเรนต์สร้างโครงสร้างข้อมูลใหม่และแยกจากกันโดยไม่มีความสามารถในการสืบค้นพาเรนต์และค้นหาลูกทั้งหมดของคลาสย่อยทั้งหมด

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