Solve: SSRS2008 R2 Extrem Slow, Bug Parameter with BETWEEN Command
สวัสดีครับ วันนี้ ผมมี ปัญหาและวิธีการแก้ไขปัญหา ของ SQL Server Reporting Service 2008 R2 SP1 มาเล่าให้ฟังครับ
Environment Server ของ ผมคือ
- Server OS: Windows 2008 R2 Ent. x64
- Hardware : PowerEdge 11G R610 8 core cpu, RAM: 16 GB, Disk raid:0 for OS
Raid :10 for data and Raid 10 for log and Temp DB (Disk on SAN)
- Network: 1 GB/s
เอาเป็นว่า เครื่อง เทพสุดๆ Run SQL Server และ Reporting Service (Native Mode) แค่นั้น ครับ
ผมเขียน Store Procedure รับ parameter 2 ตัว คือ @FromDate และ @ToDate
Output เป็น Trasaction ตามวันที่ระบุ จาก from ถึง to
ผมเขียน SQL Command โดยใช้ คำสั่ง
SELECT col1, col2, amount
FROM Trans
WHERE TransDate BETWEEN @FromDate AND @ToDate
ทำการทดสอบ Execute Store Prodecure ผ่าน Query Analyzer แล้ว
ทำงานได้เร็วมาก ไม่ถึง 3 msec. (Data size 3 GB)
แต่พอ ส่งให้ Reporting Service เพื่อ Display ใน Report ปรากฎว่า 5 นาทีผ่านไปยังไม่เสร็จครับ
ผมทดสอบแล้ว ทดสอบอีก ประมาณ 10 กว่าครั้ง ก็ใช้เวลานานเหมือนเดิม ก็แสดงว่า ไม่ได้เป็นแค่เพียง
ครั้งแรก เหมือนกับปัญหาของท่านอื่นๆ
ลองค้นใน web ก็เห็น คนอื่นเจอเหมือนกันเช่น
http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/efc4a02d-42b8-4844-bfbf-df9ffbe4c743
http://www.sqlservercentral.com/Forums/Topic971816-150-1.aspx
http://www.sqlchick.com/entries/2011/1/25/whats-up-with-the-slow-ssrs-r2-rendering-in-sharepoint-2010.html
แต่ก็ไม่มีคนพูดถึงวิธีการแก้ไข แต่ลองแก้ไข SQL Command ใน Store Procedure เป็น
SELECT col1, col2, amount
FROM Trans
WHERE TransDate>=@FromDate AND
TransDate<= @ToDate
ปรากฎว่า Report Execute เร็วขึ้นเยอะเลยครับ จาก 5 นาที(minute) To 5 msec.
สรุป คือ แก้ปัญหา ด้วยการ แก้ไข SQL Command ใน StoreProcedure โดยไม่ใช้คำสั่ง BETWEEN
ผมว่า อาจจะเป็น Bug ของ SSRS 2008 R2
Microsoft บอกว่าให้ Update Patch CU 3 ตาม Link http://support.microsoft.com/kb/2276203
แต่ผมก็ยังไม่ได้ทดสอบลง patch นะครับว่า ลงแล้ว มันช่วยแก้ปัญหาหรือเปล่า ถ้าผมทดสอบแล้ว
ได้การว่าอย่างไรจะมาแจ้งอีกครั้ง
Environment Server ของ ผมคือ
- Server OS: Windows 2008 R2 Ent. x64
- Hardware : PowerEdge 11G R610 8 core cpu, RAM: 16 GB, Disk raid:0 for OS
Raid :10 for data and Raid 10 for log and Temp DB (Disk on SAN)
- Network: 1 GB/s
เอาเป็นว่า เครื่อง เทพสุดๆ Run SQL Server และ Reporting Service (Native Mode) แค่นั้น ครับ
ผมเขียน Store Procedure รับ parameter 2 ตัว คือ @FromDate และ @ToDate
Output เป็น Trasaction ตามวันที่ระบุ จาก from ถึง to
ผมเขียน SQL Command โดยใช้ คำสั่ง
SELECT col1, col2, amount
FROM Trans
WHERE TransDate BETWEEN @FromDate AND @ToDate
ทำการทดสอบ Execute Store Prodecure ผ่าน Query Analyzer แล้ว
ทำงานได้เร็วมาก ไม่ถึง 3 msec. (Data size 3 GB)
แต่พอ ส่งให้ Reporting Service เพื่อ Display ใน Report ปรากฎว่า 5 นาทีผ่านไปยังไม่เสร็จครับ
ผมทดสอบแล้ว ทดสอบอีก ประมาณ 10 กว่าครั้ง ก็ใช้เวลานานเหมือนเดิม ก็แสดงว่า ไม่ได้เป็นแค่เพียง
ครั้งแรก เหมือนกับปัญหาของท่านอื่นๆ
ลองค้นใน web ก็เห็น คนอื่นเจอเหมือนกันเช่น
http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/efc4a02d-42b8-4844-bfbf-df9ffbe4c743
http://www.sqlservercentral.com/Forums/Topic971816-150-1.aspx
http://www.sqlchick.com/entries/2011/1/25/whats-up-with-the-slow-ssrs-r2-rendering-in-sharepoint-2010.html
แต่ก็ไม่มีคนพูดถึงวิธีการแก้ไข แต่ลองแก้ไข SQL Command ใน Store Procedure เป็น
SELECT col1, col2, amount
FROM Trans
WHERE TransDate>=@FromDate AND
TransDate<= @ToDate
ปรากฎว่า Report Execute เร็วขึ้นเยอะเลยครับ จาก 5 นาที(minute) To 5 msec.
สรุป คือ แก้ปัญหา ด้วยการ แก้ไข SQL Command ใน StoreProcedure โดยไม่ใช้คำสั่ง BETWEEN
ผมว่า อาจจะเป็น Bug ของ SSRS 2008 R2
Microsoft บอกว่าให้ Update Patch CU 3 ตาม Link http://support.microsoft.com/kb/2276203
แต่ผมก็ยังไม่ได้ทดสอบลง patch นะครับว่า ลงแล้ว มันช่วยแก้ปัญหาหรือเปล่า ถ้าผมทดสอบแล้ว
ได้การว่าอย่างไรจะมาแจ้งอีกครั้ง
ความคิดเห็น
แสดงความคิดเห็น