มีปัญหา ms access ช้ามาก
กระทู้เก่าบอร์ด อ.Yeadram

 13,307   14
URL.หัวข้อ / URL
มีปัญหา ms access ช้ามาก

เรื่องมีอยู่ว่าตอนนี้ใช้ acccess โดยการแยก back end แล้ววางไว้ทีเครื่อง server แล้วก็ แชร์ไฟล์ไว้ ส่วน front end ก็วางไว้ที่ server และ เครื่องอื่นๆแล้วก็ link table มาที่เครื่อง server พอใช้งานที่ server ก็ยังไหวอยู่ แต่พอใช้ที่เครื่องอื่นๆ จะช้ามาก ไม่รู้ว่าเกิดจากอะไร พอหาข้อมูลจากที่ต่างๆก็ไม่ค่อยเข้าใจเลยรบกวนผู้รู้ช่วยตอบด้วยครับ

1.การทำ upsizing ใน access จะช่วยได้ไหม ต้องทำยังไง ทำทั้ง back end ,front end หรือเปล่า (upsizing คือ mysql หรือเปล่า???)

2.ถ้าต้องแปลง back end เป็น mysql ต้องทำยังไงบ้าง ต้องใช้โปรแกรมอะไรบ้าง(เช่น mysql ,odbc) แปลงจากaccessต้องแก้ข้อมูลอะไรไหม หรือว่าใช้ได้เลย

3.ส่วนfront end(access) ต้องแก้อะไรไหม แล้วจะเชื่อมกับ back end (mysql) ยังไง

หากระทู้ที่ใกล้เคียงกันแล้วแต่ไม่ค่อยเข้าใจ

http://www.thai-access.com/suphap.php?topic_id=187

http://www.thai-access.com/suphap.php?topic_id=2173

รบกวนผู้รู้ช่วยตอบด้วยครับ

14 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02226
แหล่งรวบรวมปัญหาเรื่อง Performance ในการใช้ Microsoft Access (แต่ก็ไม่ได้หมายถึงว่าจะครอบคลุมแก้ปัญหาได้ 100% นะครับ) http://www.granite.ab.ca/access/performancefaq.htm

ส่วนการ Upsizing นั้น ผมไม่เชี่ยวชาญครับ คงบอกได้เพียงว่าลองดูใน www.msdn.com แล้วค้นด้วยคำว่า upsizing ครับ
2 @R02227
การทำ Upsizing ตามที่ผมได้ลองผิดลองถูกมา แต่ไม่ได้นำไปใช้จริงหรอกครับ แค่ลองเล่นๆ ทำให้ผมพอจะเข้าใจและสรุปคร่าวๆ ได้ว่า

- เป็นการย้ายฐานข้อมูลจาก ms Access ไปสู่ ms sql (ไม่ใช่ mysql)
- คุณต้องติดตั้งโปรแกรม ms sql ในเครื่องนั้นๆ ก่อน หรือคุณต้องมี ms sql อยู่ใน server หรือวงเน็ตเวอร์คของคุณก่อน
- เวอร์ชั่นของ ms sql จะต้องสัมพันธ์กัน และรองรับกัน กับเวอร์ชั่น ms access ที่คุณใช้
- คุณจะต้องได้สิทธิ์หรือมีสิทธิ์ใน ms sql นั้น (มี username password และมีสิทธิ์เพียงพอที่จะสร้าง database ตัวใหม่)
- mdb หรือ mde ที่คุณเคยใช้ จะถูกยกเลิกระบบจะให้คุณเปลี่ยนไปใช้ ADP แทน (สามารถคอมไพลให้เป็นเหมือน mde ได้อีกในภายหลัง)
- adp ลำดับแรกนั้น วิซาร์ดตัวช่วย upsizing จะสร้างให้คุณก่อน 1 ตัว คุณสามารถสร้างเพิ่มในภายหลังได้ object บางอย่างใน mdb ตัว front-end ที่คุณเคยใช้ ยังสามารถ import เข้ามาใช้ตามปกติ ใน adp ได้ เช่น ฟอร์ม, โมดูล, รายงาน
- ประสิทธิภาพ ความเสถียรความรวดเร็วของการเชื่อมต่อ ยังต้องขึ้นอยู่กับการจัดการระบบทั้ง ระบบฐานข้อมูล และระบบการเชื่อมต่อในเน็ตเวอร์คของคุณเช่นเดิม

ถ้าคุณยังไม่คล่องจริง เรื่อง ms msql หรือการใช้ adp (ซึ่งจะต่างไปจาก mdb พอสมควร) ขอแนะนำว่า อย่าได้ใช้ทดลองกับข้อมูลจริง
- ศึกษาการใช้ ms sql กับ adp ให้คล่องก่อน หรือ......
- ศึกษาการทำ Performance ของ mdb และของ network เพื่อจะใช้ mdb ต่อไป

แนวคิดในการปรับปรุงเรื่องความเร็วเบื้องต้น ตามสไตล์ผม
(client เครื่องอื่นๆ จะได้ไม่มีปัญหาเรื่องความเร็วในการเข้าถึงข้อมูลชุดเดียวกัน)
- ลดการลิงค์ตาราง เปลียนไปใช้วิธีการรัน sql แบบงานต่องาน หรือการ select ชุดข้อมูลมาพักในตารางพักแล้วทำงานจนเสร็จค่อยสั่งอัพเดตกลับ
- การโหลดข้อมู?เข้ามาบนฟอร์ม ให้ลดการล็อคข้อมูล ถ้าไม่จำเป็นจริงๆ ก็ไม่ต้องล็อค
- ในระบบเน็ตเวอร์คให้พยายามบริหารแบนด์วิธให้ดี ในสายแลนเดียวกัน อาจมีการใช้งานหลายอย่าง เช่นอินเตอร์เน็ต การสั่งปริ๊นท์ การโอนถ่ายไฟล์อื่นๆ และรวมไปถึงการทำงานด้วยข้อมูลของโปรแกรมคุณเอง ตรงนี้ต้องช่วยกันประหยัด อย่าลืมว่ามันสายเส้นเดียวกันทั้งหมด
- ประสบการณ์ผมยังน้อยอยู่เกี่ยวกับ Performance คงให้คำแนะนำ-ให้แนวทางได้แค่นี้แหละครับ
3 @R02233

*** ปัญหา ms access ช้ามาก ***
ก่อนที่จะไปทำอย่างอื่นลองมาตรวจสอบ ปัจจัยเหล่านี้ดูนะครับ

- ขนาดของ Database ควรทำการ compact ตามความเหมาะสม
- ระบบ Network มีปัญหา ไวรัส spy ware หรือไม่ Update ลองแสกนแบบ full scan ทั้ง 2 อย่าง
- การต่อแลนแบบ ไร้สาย(Wireless LAN) ระวังเรื่องความ Stable ความแรงของสัญญาณ ถ้าดับบ่อย ระวัง database corrupt

- Lan Card ความเร็วเท่าไร 10/100/1000 วิ่งเต็มมั๊ย ที่ Switch/Hub ไฟส้มมั๊ย

คิดออกเท่านี้ก่อน...
Ms. Access แต่ละรุ่น Database Specifications and Limitations ไม่เท่ากัน
4 @R02237
ขอบคุณสำหรับทุกคำตอบครับ

เริ่มแรกผมหัดทำ access ด้วยตัวเองโดยการลองผิดลองถูก ค่อยๆทำที่ละตารางๆ จึงไม่รู้ว่าการออกแบบระบบทีู่ถูกต้องเป็นอย่างไร เอาแค่ใช้งานได้เท่านั้น(ซึ่งตอนนี้ก็ัยังไม่รู้T_T) ตอนนี้โปรแกรมผมมี Query 48 ,form 37,report 3 Size 6mb. ส่วนข้อมูล table 17table, size 70 mb. โปรแกรมผมมีการทำcombo box เยอะจึงมีการlinkแต่ละตารางเข้าด้วยกัน(ถ้าดูในหน้าความสัมพันธ์ปลายด้านนึงเป็นเลข1อีกด้านเเป็นinfinity...ไม่รู้ว่าหมายความว่าอะไร) คำถามนะครับ
1.การลดการลิงค์ตารางทำยังไง แล้วจะมีผลต่อโปรแกรมไหม
2.การรัน sql แบบงานต่องาน คืออะไรครับ
3.การ select ชุดข้อมูลมาพักในตารางพักแล้วทำงานจนเสร็จค่อยสั่งอัพเดตกลับ ทำยังไงครับ
4.ผมใช้access 2003 ต้องใช้กับ mysql เวอร์ชั่นไหน

ความจริงแล้วถ้าแก้ไขแค่ในaccess ได้ก็จะดีมากเพราะมีไม่ความรู้mysql เลยครับ
รบกวนแนะนำด้วยครับ ขอบคุณครับ
5 @R02332
แนะนำทำตามคำแนะนำของคุณGerald

ที่สำคัญแนะนำให้ compact หรือกระชับข้อมูลทุกครั้งเมื่อเลิกใช้ Access ครับ ผมเคยเจอปัญหานี้เหมือนกัน ตอนแรกคิดว่าขนาดไฟล์ใหญ่เกินไป

ไฟล์ของผมขนาดที่กระชับแล้ว 30MB จำนวน table และอื่นๆนับไม่ไหว ยังใช้งานเป็นกลุ่มด้วยกัน 6 เครื่องพร้อมกันสบายๆครับ( สเปคเครื่องก็เป็นแค่ pentium ธรรมดาด้วยครับ)

อ้อผมใช้ Access 2003 นะครับ เคยใช้ 2007 แล้วมีปัญหาช้าครับ
6 @R02370
ผมใช้ Access 97 แนะนำใ้ห้เอาตัวโปรแกรมลงที่ Local Drive ครับ
ส่วน Database ที่ Attached อยู่บน Server ครับ
งานของผมมีไฟล์โปรแกรมขนาด 15 MB ทำเป็น FrontEnd ลงทุกเครื่อง
ไฟล์ Database ขนาด 450 - 800 MB ประมาณ 15 ไฟล์ (ฺBackEnd)
ใช้งานได้เร็ว ไม่มีปัญหาอะไร ข้อมูลมีประมาณ 2500000 Transection ต่อวัน ครับ
7 @R02372
ช่วยแนะนำเป็นความรู้หน่อยครับว่าทำยังไงครับถึงรับได้ 2.5 ล้าน transaction เพราะวันนึงมี 86,400 วินาที แปลว่าภายใน 1 วินาทีรับได้ถึง 28.935 transaction ทีเดียว
8 @R02381
กำลังเจอปัญหานี้พอดี ขอบคุณทุกท่าน ครับ
9 @R16668
ปัจจุบันตัวโปรแกรมลงอยู่ที่เครื่อง Client เป็น Access 2000 ส่วนเครื่องที่ใช้ MS Office เวอร์ชั่นสูงกว่านั้น จะใช้ Access Runtime 2000 ใช้ Database SQL Server ปัจจุบันมีขนาดใหญ่มาก ประมาณ 7-8 GB ดูข้อมูลย้อนหลังถึงปี 2011 ส่วนจำนวน Transection Stock อยู่ที่ประมาณ 12,000 ต่อวัน จำนวน user ที่ใช้งานประมาณ 50 เครื่อง ตอนนี้เวลาเปิดฟอร์มหรือรายงาน เพื่อเรียกข้อมูล ระบบจะโหลดนานมาก ไม่รู้จะเริ่มต้นแก้ปัญหายังไง ใครมีแนวคิดบ้างค่ะ
10 @R16676
ระบบ Network น่าจะมีปัญหา    เคยเชื่อมต่อ My slq กับ aceess แล้ว My sql ช้ามาก
11 @R16678
ขอบคุณมากค่ะ คุณ VV
12 @R16792
ของผมตัว sever กับ Client อยู่ไกลกันมากเกินครับ
13 @R16835
เป็นเหมือนกันครับ เคยลองแก้โดย
วิธีที่ 1
แยกฐานข้อมูล SQL เป็น 2 ส่วนคือฐานข้อมูลเก่า และฐานข้อมูลใหม่ แล้วจัดทำตัว Access ให้รองรับทั้งฐานข้อมูลเก่าและฐานข้อมูลใหม่ อันนี้ผมตั้งสมมุติฐานโดยข้อมูลเก่าใช้แค่สืบค้น รอนานได้ แต่ฐานข้อมูลใหม่ (ในห้วง 1 ปี) อาจใช้งานมากหน่อย ให้มีข้อมูลน้อย และใช้งานได้เร็ว จะทำให้เกิดความสะดวก ตอนนั้นผมยังไม่มีงบประมาณจัดหาเครื่องคอม ก็ใช้วิธีนี้
วิธีที่ 2
ซื้อ Server ใหม่ให้เป็นรุ่นปีปัจจุบัน
ซื้อเครื่อง Client ใหม่ให้เป็นรุ่นปีปัจจุบัน
(อันนี้เร็วขี้นเห็น ๆ เลยครับ)
วิธีที่ 3 (กำลังจะลองทำดูครับ)
ออกแบบระบบงานบน access ใหม่ โดยเขียนเป็น Code SQL ส่งไปยัง SQL Server ให้ส่งข้อมูลมาเท่าที่ต้องการ (ซึ่ง SQL Server ส่งข้อมูลมาน้อย จะแสดงผลได้เร็วกว่า) จากเดิมผมใช้วิธี link table จาก SQL Server แล้วมาเขียน Query ใน Access เพื่อแสดงผลข้อมูลที่ต้องการ (อันนี้ SQL Server จะส่งข้อมูลมาให้เครื่อง Client ทั้งตาราง ซึ่งมีเป็นจำนวนมาก ยิ่งมีหลายตาราง จะยิ่งมีข้อมูลมาก ซึ่งจะทำให้แสดงผลได้ช้ากว่า) ที่คิดเช่นนี้เนื่องจากผมเคยลองทำใน VB แล้วได้ผลดี

แลกเปลี่ยนเรียนรู้ครับ
14 @R16838
     ผมก็เคยใช้ MS-Access-2003 ซึ่งเมีอยู่ำระบบหนึ่ง ผม Link Database 3 ก้อน คือทั้ง MySQL, MS-SQL และ Oracle ในส่วนของ MySQL กับ MS-SQL ไม่มีปัญหาอะไร เพราะ Link ผ่าน ODBC ได้อยู่แล้ว มีปัญหานิดหน่อยตรง Oracle ที่ใช้ ODBC อย่างเดียวไม่พอ ต้องลงโปรแกรม Oracle ที่ Client ด้วย
     ข้อมูลที่ผมใช้อยู่ ก็วิ่งอยู่ในระดับล้าน record ก็ไม่เห็นว่าจะช้าตรงไหน ที่เคยเห็นว่าช้าก็มีสาเหตุมาจาก
1. Network บางช่วงที่มีปัญหาเรื่อง Traffic มากๆ
2. Query ที่ Join Table กันมากเกินไป หรือ Join Table กันไม่ถูกวิธี
3. เก็บไฟล์ที่เป็น OLE Object ใน Table แทนที่จะเก็บเป็น Path Link
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2382s