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

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

1
สถิติการอัปเดตอัตโนมัติใน SQL Server 2008R2: ทำไมบางสถิติยังคงค้างแม้ว่าจะมีการแทรกแถวจำนวนมาก
ในระหว่างการตรวจสอบแบบสอบถามที่ช้านั้นปรากฏว่าแผนการดำเนินการนั้นไม่ดีเท่าที่ควร เมื่อยืนยันแล้วว่ามีสถิติที่เกี่ยวข้องซึ่งจริง ๆ แล้วล้าสมัยฉันได้สร้างสถิติขึ้นมาใหม่และปัญหาประสิทธิภาพได้รับการแก้ไขอย่างมีประสิทธิภาพ ฐานข้อมูลนี้เปิดใช้งานสถิติการอัพเดทอัตโนมัติ (โดยค่าเริ่มต้น) ฉันเข้าใจว่ามีเกณฑ์สำหรับการอัปเดตสถิติอัตโนมัติโดยพิจารณาจากการแก้ไขแถว 20% + 500 (อัปเดต / แทรก / ลบ) เกณฑ์นี้ดูเหมือนจะเกินกว่าระดับสูงของดัชนีหลายรายการเช่นนั้นปรากฏว่ามี (A) ปัญหาเกี่ยวกับการอัปเดตอัตโนมัติหรือ (B) มีกลยุทธ์การอัปเดตมากกว่าที่ฉันพบได้ในออนไลน์ เอกสาร ฉันซาบซึ้งที่งานที่กำหนดเวลาไว้สามารถตั้งค่าเพื่ออัปเดตสถิติและนี่น่าจะเป็นแนวทางที่เราใช้หากไม่พบวิธีแก้ไขปัญหาอื่น ๆ อัปเดตอัตโนมัติสำหรับสถิติบางอย่าง - ทำความเข้าใจว่าทำไมอาจช่วยเราในการตัดสินใจว่าจะต้องอัปเดตสถิติใดโดยภารกิจที่กำหนดเวลาไว้ หมายเหตุเพิ่มเติมบางส่วน: 1) ปัญหาถูกบันทึกไว้ในฐานข้อมูลที่ข้อมูลถูกสร้างขึ้นโดยการทดสอบโหลดและเนื่องจากมีการเพิ่มข้อมูลจำนวนมากในช่วงเวลาสั้น ๆ ดังนั้นหากการอัปเดตอัตโนมัติเกิดขึ้นเป็นระยะ ๆ (เช่นวันละครั้งที่ ส่วนใหญ่) สิ่งนี้อาจอธิบายพฤติกรรมที่สังเกตได้บางอย่าง นอกจากนี้การทดสอบโหลดของเรามักจะเน้นที่ฐานข้อมูลอย่างหนักดังนั้นฉันสงสัยว่า SQL จะชะลอการอัปเดตสถิติขณะที่มีการโหลดจำนวนมากหรือไม่และไม่อัปเดตสถิติด้วยเหตุผลบางประการ 2) ในการพยายามสร้างปัญหานี้อีกครั้งด้วยสคริปต์ทดสอบที่มี INSERT ต่อเนื่องคำสั่ง SELECT และ DELETE จะไม่เกิดปัญหาขึ้น ฉันสงสัยว่าความแตกต่างที่นี่เป็นที่งบเหล่านี้แต่ละคนมีผลต่อแถวจำนวนมากต่อคำสั่ง SQL ในขณะที่สคริปต์ทดสอบโหลดของเราจะมีแนวโน้มที่จะแทรกแถวเป็นรายบุคคล 3) …

2
การกำหนดค่า MySQL 5.1 InnoDB / 24GB RAM - โหลดสูง bi-xeon
ฉันกำลังใช้งานแอพ facebook ซึ่งปัจจุบันมีผู้ใช้งานพร้อมกัน 300 - 600 คน (และกำลังเติบโต) เพื่อให้ฮาร์ดแวร์พร้อมสำหรับการเติบโตฉันได้เปลี่ยน i7 / 12gb ram / 2x 80gb intel x25 ssd (debian 5.0 / mysql 5.0 / 64 บิต) เป็น bi-xeon / 24gb ram / 2x 120gb intel 320 ssd (Ubuntu 10.10 / mysql 5.1 / 64bit) ตอนนี้ฉันกำลังเผชิญกับปัญหาที่ประสิทธิภาพแย่กว่า "กล่องขนาดเล็ก" ในเซิร์ฟเวอร์ทั้งสองฉันใช้ nginx / …

4
เพิ่มประสิทธิภาพการเข้าร่วมบนโต๊ะขนาดใหญ่
ฉันพยายามเกลี้ยกล่อมให้มีประสิทธิภาพมากขึ้นจากการสืบค้นที่เข้าถึงตารางที่มีระเบียน ~ 250 ล้านรายการ จากการอ่านแผนปฏิบัติการจริง (ไม่ได้ประเมิน) ของฉันคอขวดแรกคือแบบสอบถามที่มีลักษณะดังนี้: select b.stuff, a.added, a.value from dbo.hugetable a inner join #smalltable b on a.fk = b.pk where a.added between @start and @end; ดูเพิ่มเติมสำหรับคำจำกัดความของตารางและดัชนีที่เกี่ยวข้อง แผนการดำเนินการบ่งชี้ว่ามีการใช้ลูปที่ซ้อนกันบน #smalltable และดัชนีการสแกนผ่าน hugetable กำลังดำเนินการ 480 ครั้ง (สำหรับแต่ละแถวใน #smalltable) สิ่งนี้ดูเหมือนจะย้อนกลับมาที่ฉันดังนั้นฉันจึงพยายามบังคับให้รวมการผสานเพื่อใช้แทน: select b.stuff, a.added, a.value from dbo.hugetable a with(index = ix_hugetable) inner …

1
รับการบันทึกขั้นต่ำเมื่อโหลดข้อมูลลงในตารางชั่วคราว
แม้หลังจากอ่านคู่มือการโหลดข้อมูลฉันยังคงไม่แน่ใจว่าจำเป็นต้องเพิ่มตาราง TABLOCK คำใบ้ลงในตารางชั่วคราวที่ว่างเปล่าซึ่งกำหนดด้วยดัชนีคลัสเตอร์เพื่อรับการบันทึกขั้นต่ำ เห็นได้ชัดว่าตาราง temp นั้นสร้างขึ้นใน TempDB ซึ่งทำงานในโหมดการกู้คืนแบบง่ายดังนั้นฉันจึงคิดว่ามันเป็นตัวเลือกที่สมบูรณ์แบบสำหรับการบันทึกที่น้อยที่สุด แต่ฉันไม่สามารถหาข้อความเพื่อยืนยันได้ เป็นตารางชั่วคราวที่เป็นตัวเลือกสำหรับการบันทึกขั้นต่ำและถ้าเป็นเช่นนั้นมันก็คุ้มที่จะเพิ่ม TABLOCK hint ตามที่แนะนำสำหรับตารางถาวรหรือไม่

1
ประสิทธิภาพเซิร์ฟเวอร์ MySql ที่ช้า - อะไรและวิธีการตรวจสอบ?
เริ่มต้น: การปฏิเสธความรับผิด ฉันไม่ใช่ MySql Server DBA; ฉันรู้ว่าส่วนใหญ่ของ MSSQL - ซึ่งเป็นเหตุผลที่ฉันต้องการความช่วยเหลือของคุณ สิ้นสุด: ข้อจำกัดความรับผิดชอบ ฉันถูกขอให้ตรวจสอบว่าเหตุใดเอ็นจิ้นเซิร์ฟเวอร์ MySql จึงทำงานได้ไม่ดี - ฉันไม่ได้เห็นหรือไม่มีฐานข้อมูลที่เกี่ยวข้องและต้องการทราบว่าจะเริ่มต้นอย่างไร ฉันจะเริ่มที่ไหน ฉันควรถามคำถามอะไรกับผู้ที่สามารถเข้าถึง MySql ได้ - ฉันไม่รู้ด้วยซ้ำว่าพวกเขากำลังใช้ phpmyadmin หรือเครื่องมืออื่น ๆ เป็นหลัก: ฉันควรถามรายการอะไรและฉันจะตอบกลับแต่ละรายการที่พวกเขาให้ได้อย่างไร ไอเท็มสำคัญที่จะถามเมื่อเกิดปัญหาในการทำงานของฐานข้อมูลคืออะไร? ใน MSSQL ฉันสามารถตรวจสอบsp_who2การเชื่อมต่อที่มีอยู่เพื่อดูว่ามีสิ่งใดที่บล็อกอยู่หรือไม่ * ไม่จำเป็นต้องเจาะจงเนื่องจากอาจมีผลลัพธ์หลายรายการสำหรับแต่ละรายการ แต่ต้องการช่วยให้ลูกบอลกลิ้งเนื่องจากมีผลกระทบต่อผู้ใช้ - เห็นได้ชัดว่าพวกเขาติดตั้งเครื่องยนต์ mysql โดยไม่ต้องมีบอร์ด dba

2
ฉันควรสร้างดัชนีใหม่หลังจากตัดทอน / แทรกขนาดใหญ่หรือไม่
ฉันมีขั้นตอนการจัดเก็บที่ตัดทอนบางตารางที่มีแถวประมาณ 1.75M ในแต่ละแถวก่อนที่จะแทรกข้อมูลใหม่ (ขึ้นอยู่กับข้อมูลในตารางอื่น ๆ การคำนวณ ฯลฯ ) โครงร่างพื้นฐานง่ายมาก: ตัดทอนตาราง แทรก 1.75M แถวใน 'batches' ประมาณ 75,000 ต่อเวลา ฉันสงสัยว่าฉันควรสร้างดัชนีใหม่อีกครั้งอย่างชัดเจนตลอดเวลาในกระบวนการนี้หรือไม่? เช่น ตัดทอนตาราง ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [หรืออะไรที่คล้ายกัน] แทรกแถว 1.75M หรือบางที ALTER INDEX ALL ON xxx DISABLE ตัดทอนตาราง แทรกแถว 1.75M ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [หรืออะไรที่คล้ายกัน] …

1
วิธีที่มีประสิทธิภาพที่สุดในการเพิ่มคอลัมน์อนุกรมลงในตารางขนาดใหญ่
อะไรที่เร็วที่สุดวิธีการเพิ่มคอลัมน์ BIGSERIAL ไปยังตารางขนาดใหญ่ (~ 3 Bil. แถว ~ 174Gb)? แก้ไข: ฉันต้องการให้คอลัมน์เป็นค่าที่เพิ่มขึ้นสำหรับแถวที่มีอยู่ ( NOT NULL) ฉันไม่ได้ตั้งสารเติม (ซึ่งดูเหมือนว่าจะเป็นการตัดสินใจที่ไม่ดีในการหวนกลับ) ฉันไม่มีปัญหาเกี่ยวกับพื้นที่ดิสก์เพียงต้องการให้เร็วที่สุดเท่าที่จะเป็นไปได้

1
ฉันควรคาดหวังอะไรจากข้อ จำกัด ขนาดใหญ่ของเซิร์ฟเวอร์ SQL ที่เชื่อมโยง
ผลิตภัณฑ์ของเราใช้ Microsoft SQL Server ขณะนี้เรากำลังใช้ฐานข้อมูลสามฐานและปรับใช้กับฐานข้อมูล SQL Server เดียวเสมอ ฐานข้อมูลที่สามคือ OLTP, OLAP และการตรวจสอบ ฐานข้อมูล OLAP มีข้อมูลขาเข้าขนาดใหญ่บน EOD จากทั้ง OLTP และการตรวจสอบโดยใช้การสืบค้นข้ามฐานข้อมูล คำถาม หากเราต้องปรับใช้ฐานข้อมูลทั้งสามนี้ไปยังอินสแตนซ์ Standard Edition สามแยกภายในเซิร์ฟเวอร์จริงและผูกเข้าด้วยกันโดยใช้คุณสมบัติเซิร์ฟเวอร์ที่เชื่อมโยงของ SQL Server: รหัสสมัครจะโปร่งใสแค่ไหน? ฉันควรคาดหวังการเปลี่ยนแปลงมากแค่ไหน? ข้อมูลขาเข้าของ OLAP มีจำนวนแถว 50k-100k, น้ำหนักบรรทุก 200-500MB ต่อ EOD ฉันควรคาดหวังว่าจะมีประสิทธิภาพลดลงเท่าใด สิ่งที่ฉันควรคาดหวังมาก ๆ พื้นหลัง ขณะนี้เรากำลังทอยลูกค้ารายแรกที่มีผู้ใช้มากกว่า 500 คนพร้อมกัน เรากำลังร่างข้อกำหนดเซิร์ฟเวอร์ซึ่งรวมถึง 64 คอร์และ RAM 256GB สำหรับ SQL …

2
ทำไมการดำเนินการ TOP ในแผนการดำเนินการ SQL
หลังจากค้นหาไปสักพักหนึ่งฉันตัดสินใจที่จะโพสต์คำถามนี้เพื่อหาคำตอบและขออภัยหากมีคำถาม / คำตอบที่คล้ายกัน เมื่อเรียกใช้คิวรีด้านล่างของเซิร์ฟเวอร์ SQL สองตัวที่คล้ายกันเราพบแผนการดำเนินการที่แตกต่างกันซึ่งมีผลต่อประสิทธิภาพและเราต้องการความช่วยเหลือในการหาสาเหตุ แบบสอบถาม: SELECT process_id INTO #temp FROM revrep_revenue_fact WHERE process_id = 284 DROP TABLE #temp แผนการดำเนินการของเซิร์ฟเวอร์ A แผนการดำเนินการของเซิร์ฟเวอร์ B เซิร์ฟเวอร์ B http://s2.postimg.org/z9fjrfv4n/server_B.png คุณจะสังเกตเห็นว่าเซิร์ฟเวอร์ B มีการดำเนินการทางกายภาพสูงสุดในแผนการดำเนินการจริงและเรากำลังพยายามหาสาเหตุ แบบสอบถามทั้งสองใช้ดัชนีเดียวกันในดัชนีค้นหา นี่คือรายละเอียดบางอย่างของเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B เซิร์ฟเวอร์ A และ B เป็นทั้งคู่ Windows Server 2008 R2 Standard Service Pack 1 RAM 24GB …

2
ค้นหาแถวที่มีเลขจำนวนเต็มตามลำดับที่กำหนด
ปัญหา หมายเหตุ: ผมหมายถึงลำดับคณิตศาสตร์ไม่ใช่กลไกลำดับของ PostgreSQL ฉันมีตารางที่แสดงลำดับของจำนวนเต็ม ความหมายคือ: CREATE TABLE sequences ( id serial NOT NULL, title character varying(255) NOT NULL, date date NOT NULL, sequence integer[] NOT NULL, CONSTRAINT "PRIM_KEY_SEQUENCES" PRIMARY KEY (id) ); เป้าหมายของฉันคือการหาแถวโดยใช้ลำดับที่กำหนด กล่าวคือแถวที่sequenceเขตข้อมูลเป็นลำดับที่มีการเรียงลำดับที่กำหนด (ในกรณีของฉันลำดับจะเรียงตามลำดับ) ตัวอย่าง สมมติว่าตารางมีข้อมูลต่อไปนี้: +----+-------+------------+-------------------------------+ | id | title | date | sequence | +----+-------+------------+-------------------------------+ | …

2
เป็นไปได้ไหมที่จะมีผู้ใช้นับพันคนใน Postgres?
เรากำลังสร้าง SAAS ที่เราจะมีลูกค้ามากที่สุด 50,000 คน เรากำลังพิจารณาที่จะสร้างผู้ใช้ในฐานข้อมูล Postgres สำหรับลูกค้าแต่ละราย เราจะแมปผู้ใช้แต่ละรายที่ลงชื่อเข้าใช้บริการของเรากับผู้ใช้ในฐานข้อมูลเพื่อให้แน่ใจว่าพวกเขาสามารถเข้าถึงข้อมูลของตนเองได้เท่านั้น นอกจากนี้เรายังต้องการใช้แนวทางการตรวจสอบโดยตรงในฐานข้อมูลด้วยโซลูชั่นนี้ซึ่งใช้ทริกเกอร์ หากลูกค้าแต่ละรายมีผู้ใช้ฐานข้อมูลของตัวเองมันจะง่ายมากที่จะดูว่าใครทำอะไรแม้ว่าลูกค้าสองคนจะแบ่งปันข้อมูลเดียวกัน เราจะประสบปัญหาที่ไม่คาดคิดหรือไม่เพราะเรามีผู้ใช้งาน 50,000 คนในฐานข้อมูลของเราหรือไม่? ประสิทธิภาพที่ชาญฉลาดหรือการบริหารที่ชาญฉลาด อาจรวมการเชื่อมต่ออาจจะยากขึ้น แต่ฉันไม่รู้จริงๆว่าเราต้องการหรือไม่

1
T-SQL - OPTION (FAST x) และค่าสถานะการติดตาม 8722
ฉันค้นหาเป็นเวลานานและยังไม่พบคำตอบสำหรับปัญหาของฉัน Dynamics AX ของเรากำลังสร้างการสืบค้นด้วยคำแนะนำการสืบค้น OPTION (FAST x) ซึ่งบางครั้งก็บังคับให้ใช้แผนการดำเนินการที่ไม่ดี ผู้พัฒนากล่าวว่าเป็นค่าเริ่มต้นและยากที่จะเปลี่ยนแปลง (ต้องแก้ไขในทุกรูปแบบที่อาจเกิดขึ้น) ดังนั้นฉันจึงใช้วิธีแทนที่คำแนะนำเหล่านี้โดยใช้ค่าสถานะการติดตาม ฉันพบการตั้งค่าสถานะการสืบค้นกลับที่น่ารัก 8722 ซึ่งอ้างว่าทำให้ SQL Server ไม่สนใจคำแนะนำการสืบค้นบางอย่างโดยเฉพาะอย่างยิ่งคำสั่งย่อยใน OPTION อย่างไรก็ตามนี่ไม่ได้ผลในกรณีของฉัน ฉันพยายามเปิดใช้งานการตั้งค่าสถานะการสืบค้นกลับ 8602 (ปิดใช้งานคำแนะนำดัชนี) เช่นกัน แต่แบบสอบถามของฉันยังคงทำงานด้วยคำใบ้ FAST x (มันช้ากว่าเมื่อฉันลบส่วนคำสั่ง OPTION ออก) ฉันพยายามล้างแคชแผนเช่นกันเพื่อประโยชน์ ความคิดใด ๆ ฉันไม่มีอะไรเลยหรือ PS ฉันเปิดใช้งานการตั้งค่าสถานะการติดตามทั่วโลกนี่คือ SQL Server 2012 Developer Edition

2
ฉันควรซ้อนภายนอกเข้าร่วมใน SQL Server หรือไม่
ฉันเคยได้ยินข้อมูลที่หลากหลายเกี่ยวกับเรื่องนี้และหวังว่าจะได้รับความเห็นที่เป็นที่ยอมรับหรือผู้เชี่ยวชาญ หากฉันมีหลายรายการLEFT OUTER JOINแต่ละรายการขึ้นอยู่กับช่วงเวลาสุดท้ายมันจะดีกว่าไหมที่จะซ้อนมัน? สำหรับตัวอย่างที่วางแผนที่JOINจะMyParentขึ้นอยู่กับJOINการMyChild: http://sqlfiddle.com/#!3/31022/5 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN MyChild AS c ON c.[Id] = gc.[ParentId] LEFT OUTER JOIN MyParent AS p ON p.[id] = c.[ParentId] เปรียบเทียบกับhttp://sqlfiddle.com/#!3/31022/7 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN ( MyChild AS c LEFT OUTER JOIN MyParent …

1
IO_STALL คำถามและความเข้าใจ
ฉันกำลังรวบรวม IO_STALLS จาก sys.dm_io_virtual_file_stats ทุก ๆ 5 นาทีจากนั้นทำเดลต้าเพื่อดูว่าไฟล์ใดบ้างที่ได้รับผลกระทบมากที่สุดจาก IO ในระยะเวลาหนึ่ง 5 นาทีฉันจะได้เดลต้าของ 5826331 ms ซึ่งเป็น 97 นาที ฉันสับสนเล็กน้อยในเรื่องนี้นี่เป็นการบอกว่าการผ่าตัดเริ่มต้นแล้ว 97 นาทีที่แล้วเพิ่งจะเสร็จที่จุดนั้นและด้วยเหตุนี้จึงบันทึกเวลารอคอยหรือไม่ ขอบคุณ เพิ่มรหัสตามที่ร้องขอ: /* USE [SysDBA] GO */ /****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/ /* DROP TABLE [dbo].[DISKIOPS] GO */ --Create the table /****** Object: Table [dbo].[DISKIOPS] Script …

1
DBCC Shrinkfile ลักษณะการทำงานที่แปลก
ฉันพยายามเรียกใช้ dbcc shrinkfile ในหน่วยความจำ 1GB เทียบกับฐานข้อมูลที่ 95% ของข้อมูลถูกเก็บถาวรและลบ ฉันเลื่อนไฟล์ 235GB โดยที่ 9GB เป็นข้อมูล / ดัชนี ฉันต้องการลดขนาดลงเหลือ 50GB ฉันรู้ว่าไฟล์ฐานข้อมูลที่ลดขนาดไม่ดีก็ทำให้เกิดการแตกหัก ฯลฯ เป็นส่วนหนึ่งของการล้างข้อมูล / หดตัวเรายังมีสคริปต์ idnex สร้างใหม่ เมื่อฉันรันสคริปต์ dbcc shrinkfile กับฐานข้อมูลบนเวิร์กสเตชันของฉันเอง (quad core, RAM 12GB, ไดรฟ์ SATA 2 เท่า) การลดขนาดใช้เวลาประมาณ 8-10 นาที เมื่อรันโค้ดที่เหมือนกันกับสำเนาที่เหมือนกันของการล้างข้อมูลที่ทำการโพสต์ฐานข้อมูลใน envrionment การทดสอบของเรา (80+ คอร์, 128GB RAM, SSD SAN) ใช้เวลา 70 …

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