Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล
Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม
Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล
Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย

น้อมรำลึกในพระมหากรุณาธิคุณอันหาที่สุดมิได้ พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดชฯ พระผู้เสด็จสู่สวรรคาลัย

Back to Board : Thai Access Webboard New Topic    Reply
ดึงข้อมูลจาก server ช้ามากคัรบ

Topic by Message Posted : on : 11/8/2560 16:55:31
ปุนน์  สอบถามหน่อยครับ ตอนนี้ผมใช้โปรแกรมขายของที่หน้าร้าน ซึ่งใช้ database เป็น access ครับ โดยผมได้ run program นี้เป็นเครื่องแม่กับเครื่องลูก ผมสังเกตุเห็นว่าการ run บนเครื่องลูกผ่าน network gigabit ยังคงดึงข้อมูลได้ช้า
หมายเหตุสิ่งที่ผมได้ทำไป
1. เปลี่ยนระบบ network ทั้งหมดให้เป็น gigabit คือ router เป็น gigabit, สาย lan เป็น cat 6
2. ข้อมูลการขายในโปรแกรม 4 ปีที่ผ่านมา ประมาณ 2 แสนกว่ารายการ ผมจึงลองลบข้อมูลเก่าออกไปจนเหลือ 1 แสนกว่ารายการ ผลปรากฎว่า ความเร็วในการดึงและค้นหาข้อมูลเพิ่มขึ้นครับ

จึงสอบถามผู้รู้หน่อยครับว่ามีวิธีให้ทำให้การค้นหาข้อมูลใน database access เร็วขึ้นโดยไม่ต้องลบข้อมูลเก่าทิ้งบ้างมั้ยครับ ขอขอบคุณล่วงหน้าครับ


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

Reply by Message on : 13/8/2560 9:27:33
admin@crtrading.net
(R23884)
pack ข้อมูลบ่อยๆ

เพิ่มความเร็วคอมตัวแม่ (ตัวแม่ควรเป็น windows server
(เพิ่ม speed cpu + ram + ssd รุ่นใหม่ๆ )

การออกแบบ query ที่ดี

ถึงจุดๆ หนึ่งก็จะไม่สามารถ แก้ไขได้ ต้องเปลี่ยน เป็น ms sql server หรือ ตัวอื่น ที่ เป็น database รุ่นใหญ่ ที่ programmer ถนัด

(ความคิดเห็นส่วนตัว)
Back to Top
Reply by Message on : 13/8/2560 9:55:47
สมชาย
(R23885)
จากประสบการณ์ที่เคยใช้ Access เป็น Database ดึงข้อมูลเกือบล้านเรคคอร์ด ก็ยังไม่ช้าเท่าไหร่นะครับ ยกเว้นมีการประมวลผลข้อมูลจากคิวรี่ที่มีการ Join Table กันมากเกินไป แต่ตอนนี้ใช้ MySQL แล้วครับ
Back to Top
Reply by Message on : 13/8/2560 10:00:56
ปุนน์
(R23886)
ขอบคุณสำหรับคำแนะนำนะครับ เบื้องต้นผมลองอ่านกระทู้เก่าๆ เกี่ยวกับการ split database โดยนำ frontend ไปไว้ที่เครื่องลูกและ backend ไว้ที่เครื่องแม่ ก็ไม่ได้ทำให้การดึงข้อมูลเร็วขึ้นครับ แต่สิ่งที่เห็นชัดเจนคือมี reliability สูงขึ้น เช่นการ key ขายพร้อมกัน โปรแกรมก็จะไม่หลุดครับ

สิ่งที่จะทำต่อไปคือติดตั้ง window server ตามที่คน admin@crtradin.net แนะนำ แล้วจะดำเนินการทดสอบต่อไปครับ ได้ผลอย่างไรจะแจ้งอีกทีนะครับ

ข้อมูลเพิ่มเติมคับ ปัญหาการดึงข้อมูลช้าจะเกิดเฉพาะเครื่องลูกข่ายเท่านั้นครับ เครื่องแม่ไม่มีปัญหาครับ ผมมีเครื่องลูกข่ายเพียง 2 เครื่องเท่านั้นครับ

ปล. สอบถามเพิ่มเติมครับ มีวิธี separate database ก้อนใหญ่ ให้เป็นหลายก้อนที่ข้อมูลเชื่อมต่อกันมั้ยครับ

ขอขอบคุณล่วงหน้าครับ
Back to Top
Reply by Message on : 13/8/2560 13:16:24
ปุนน์
(R23887)
สอบถามคุณสมชายหน่อยครับ ถ้าผมใช้ frontend วิ่งมาหา backend แล้วใช้ ODBC เชื่อมไปยัง mysql สามารถทำได้มั้ยครับ และจะช่วยให้ระบบผมเร็วขึ้นหรือไม่ครับ ขอบคุณมากครับ
Back to Top
Reply by Message on : 13/8/2560 13:54:44
สมชาย
(R23888)
ทำได้ครับ ผมก็ทำอยู่ ใช้ Access เป็น Front end ส่วน Database ใช้ MySQL โดย Link Table ผ่าน ODBC ซึ่งที่เครื่อง Clients สามารถทำงานพร้อมกันได้หลายๆ
เครื่องโดยไม่มีปัญหาอะไร และไม่เคยหลุด ส่วนปัญหาความช้า เท่าที่ผมสังเกตุดู ไม่ได้มาจากเรื่อง Network หรือการใช้งาน Clients พร้อมกันหลายๆ เครื่อง แต่ส่วนใหญ่ปัญหาจะอยู่ที่การเขียนคิวรี่มากกว่า ถ้าซับซ้อนมากก็จะช้า เช่น บางครั้งการทำ Report ที่จำเป็นจะต้อง Link หลาย Table ผมก็อาจจะเลี่ยงโดยการทำ Make Table Query ก่อน แล้วค่อยใช้มาโครช่วยในรวมขั้นตอนการทำงานเหตุการณ์ต่างๆ เพื่อให้ User โดยกดเพียงปุ่มเดียว
Back to Top
Reply by Message on : 13/8/2560 23:05:36
pizza_p
(R23890)
ขอออกความเห็นนิดนึงครับ windows server อาจจะไม่ช่วยอะไรครับ ตัวฐานอาจจะเปลี่ยนเป็น SSD อาจจะช่วยได้บ้างครับ
Back to Top
Reply by Message on : 14/8/2560 15:56:45
สันติสุข
(R23893)
1. ทำ Compact and Repair Database ที่อยู่บนเครื่องเซิร์ฟเวอร์ก่อน

2. Relink ลิงค์เทเบิลบนเครื่องลูกใหม่อีกที แล้วลองเปิดเทเบิล(ไม่ใช่เปิดผ่าน Form) ที่บอกว่ามี 2 แสนเรคอร์ดผ่านลิงค์เทเบิลบนเครื่องลูก ไม่ต้องทำการ sort หรือ filter อะไรทั้งสิ้น หรือถ้ามีอยู่ ก็ให้ remove sort/filter นั้นออกไปจากเทเบิลก่อน ต่อไปให้กดคีย์ Page Down เร็วๆถี่ๆ ดูว่ากว่าจะแสดงแต่ละหน้าออกมานั้น มีการหน่วงจนน่าเกลียดหรือไม่ ถ้าไม่มี ก็น่าจะเกิดจากการที่ไม่ได้สร้าง index ของฟิลด์ต่างๆให้เหมาะสมกับเงื่อนไขในส่วนของ WHERE clause ใน SQL statement ของคิวรี่ หรือเงื่อนไขของการ sort/filter ของฟอร์ม เช่นคุณสั่งดูการขายตามวันที่ แต่ไม่มีทำ index สำหรับฟิลด์วันที่ขายไว้เลย โปรแกรมก็ต้องไล่จัดเรียงทั้ง 2 แสนเรคอร์ดให้หมดเพื่อหาผลลัพธ์ที่ต้องการ ซึ่งต้องช้าแน่นอนครับ ก็ให้เพิ่ม index ที่เหมาะสม แล้วทำข้อ 1 อีกที

แต่ถ้ามีหน่วง อาจเกิดจากมีการคอนฟิก Firewall หรือ Anti Virus อะไรบางอย่างที่ทำให้เกิดการสแกนข้อมูลบนเน็ทเวิร์คอยู่ตลอดเวลา ลองปิดการทำงานแล้วดูว่าช้าอีกหรือไม่ และลอง ping ไปหาเซิร์ฟเวอร์เพื่อตรวจดูว่ามีข้อมูล lost หรือไม่ ถ้ามี พวกอุปกรณ์เน็ทเวิร์ครวมทั้งสายสัญญาณ,หัว RJ อาจมีปัญหาร่วมด้วย
Back to Top
Reply by Message on : 14/8/2560 16:52:59
ปุนน์
(R23894)
วันนี้ได้ทำการทดสอบเพิ่มเติมครับ

1. ใช้ window server 2012 แทน window 10 -> ยังไม่พบความแตกต่างครับ

2. ทำตามคำแนะนำของคุณสันติสุข คือทำ index date ให้กับ database -> ความเร็วเพิ่มขึ้นครับ และไม่พบอาการ not responding ในขณะรอข้อมูลตอบกลับมาครับ ต้องขอบคุณคำแนะนำจากคุณสันติสุขด้วยครับ

3. ลองใช้ Microsoft mysql เป็น database แทน access แล้วใช้ front end (access) ดึงข้อมูลมา จากคำแนะนำของคุณสมชาย ตอนนี้ยังติดปัญหา ODBC ไม่สามารถเชื่อมต่อกับ mysql ได้ครับ (ตั้งแต่เมื่อวานจนถึงตอนนี้ครับ) กำลังหาวิธีเชื่อมต่ออยู่ครับ

4. สำหรับคำแนะนำของคุณ pizza_p มีแผนที่จะเปลี่ยนเป็น SSD ในไตรมาส 4 นี้ครับ

ขอขอบคุณทุกๆ ท่านที่ช่วยสละเวลามาให้คำแนะนำครับ
Back to Top
Reply by Message on : 15/8/2560 9:46:14
ปุนน์
(R23895)
ขอสอบถามคุณสมชาย และท่านอื่นๆ หน่อยครับ
ตามที่คุณสมชายได้แนะนำเรื่อง ใช้ mysql เป็น backend แทนแล้วใช้ frontend access odbc เชื่อมต่อเข้าไปที่ mysql ตอนนี้สามารถนำมาใช้ได้ครับ แต่มันติดปัญหาตรงจะให้รายงานการขายย้อนหลังครับ ในโปรแกรมมันจะฟ้องว่า crystal reports: database error ซึ่งเป็น database ก้อนเดียวกับที่เอาไปไว้ใน mysql ครับ

รบกวนทุกท่านช่วยแนะนำด้วยครับ
Back to Top
Reply by Message on : 15/8/2560 14:57:50
ปุนน์
(R23896)
สอบถามครับ ผมสร้าง ODBC เพื่อเชื่อมต่อ mysql จะได้ table ออกมาชื่อว่า db0_sale ผมจึงได้ทำการลบ table ใน access ที่ชื่อว่า sale ออก และทำการ rename table db0_sale -> sale ผมทำแบบนี้ถูกต้องมั้ยครับ
Back to Top
Page:   1 2 Next >>

Reply

 *Indicates required fields
Format:
Bold Under Line Italic Add Hyperlink Add Email Link Italic List Indent Add Image Emoticons Insert code Mode:
Message:*
Your Name*:
Normal word*: Please input : ไทยแอ็คเซส
+++ webboard source: ASPThai.Net Webboard 6.0 webbord +++++++ admin : yeadram +++