หาวิธีเพิ่มประสิทธิภาพ
กระทู้เก่าบอร์ด อ.Yeadram

 1,418   8
URL.หัวข้อ / URL
หาวิธีเพิ่มประสิทธิภาพ

เรียนอาจารย์ทุกท่าน
1.ผมประยุกต์โปรแกรม Access 2007 ต่อจากนั้นผมแยกฐานข้อมูล Front-end ,back-end
2.นำฐานข้อมูลที่แยกไปเก็บไว้ในเครื่อง Server
3.จัดทำระบ LAN 1 วง แล้วแชร์ข้อมูล
4.จำลองฮาร์ดดิส ไว้ในเครื่อง Client
5.ทำการเชื่องโยงกับเครื่อง Server แล้วสามารถทำงานได้หลายเครื่องพร้อมกันและไม่ขัดกัน
******ขอเรียนถาม*******
1.วิธีที่ผมกล่าว เป็นเพียงวิธีหนึ่งเท่านั้น หรือยังมีวิธีอื่นอีกไหมที่เพิ่มความรวดเร็วในการรับ - ส่งข้อมูล
2.หากมีวิธีที่มีประสิทธิภาพมากว่าที่ผมได้กล่าวไป กรุณาช่วยแนะนำเพิ่มเติมจะขอบพระคุณอย่างยิ่งครับ..........

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

1 @R18879
ถ้าพูดถึงเรื่องของโปรแกรมมิ่ง รายละเอียดเยอะครับ ลองอ่าน http://www.granite.ab.ca/access/performancefaq.htm หรือหาในกูเกิลด้วยคำว่า Microsoft Access Performance Tuning ก็ได้ครับ

ข้อ 4 คือทำ Virtual Disk บนเครื่อง Client เหรอครับ ผมว่าไม่มีประโยชน์ต่อการทำงานของ Access นะ ในทางกลับกัน ถ้าทำบนเครื่อง Server แล้วเอาฐานข้อมูลวางในนั้น จะทำให้เร็วขึ้นได้ แต่ก็ต้องแลกมาด้วยความอันตรายเพราะหากเกิดไฟดับ หรือเซิฟเวอร์แฮงก์ไป ข้อมูลก็หายเกลี้ยง หรือแม้แต่ shut down ธรรมดา ถ้าไม่มีระบบจัดการก๊อปปี้มาลงดิสก์จริงแล้วหล่ะก็ ก็หายเหมือนกัน

เวลาลิงค์เทเบิลมาจากเซิฟเวอร์ เราก็มักใส่ \\ชื่อเครื่องเซิฟเวอร์\พาธ....   ให้เปลี่ยนไปเป็นเลข IP แทน เช่น \\172.28.16.1\พาธ.... แทน และพาธอย่าอยู่ลงไปลึกหลายระดับ

เซอร์วิสอะไรของเซิฟเวอร์ที่ไม่จำเป็นก็ disable ไปครับ

อย่า compress ดิสก์หรือโฟลเดอร์ที่เราวางฐานข้อมูล

เทคนิคนี้ไม่ค่อยดี เป็นการเบียดเบียนชาวบ้าน คือ สมมุติเรามีเครื่อง A, B, C ที่ใช้โปรแกรมเรา ส่วน D, E, F ไม่ได้ใช้ ให้เครื่องเซิฟเวอร์และ A, B, C อยู่ใน switch ตัวเดียวกัน ส่วนเครื่อง D, E, F ให้ต่อกับ switch อีกตัว แล้วค่อยต่อ switch ตัวนั้นมายังตัวแรกอีกที
2 @R18885
ถ้าผมทำแบบพี่แดนชัยแต่แปลงฐานข้อมูลจาก access เป็น sql แทนซึ่งบังเอิญว่าสามารถใช้กับ form,query,report ที่สร้างด้วย access ได้ทั้งหมด อันนี้จะทำให้ประสิทธิภาพดีขึ้นกว่าฐานข้อมูลที่ใช้ table ของ access หรือไม่ครับ
3 @R18886
ใช้วิธี link table ผ่าน odbc เอาครับ
4 @R18888
ผมยังไม่เคยเห็นที่ไหนบอกผลการเปรียบเทียบให้เห็นว่ามันแตกต่างกันมากน้อยแค่ไหนระหว่างการใช้ JET (หรือ ACE) กับ ODBC เป็น Data Connectivity ยกเว้นว่าจะแก้ไขโค้ดในโปรแกรมให้ส่งคำสั่งไปทำงานยังตัว MS SQL แทน ซึ่งส่วนใหญ่แล้วจะได้ผลลัพธ์เร็วกว่าการเขียนโปรแกรมแบบเดิมๆ    เพราะถ้าเราเขียนแบบเดิมๆ ไม่ว่าเราจะใช้ Data Connectivity แบบไหนกับ Linked Table   เมื่อเราเขียนโปรแกรมหรือสร้างคิวรี่เพื่อดึงข้อมูลมา    Data Connectivity เหล่านี้จะต้องไปดึงเรคอร์ดหรือส่วนที่เก็บ index key จากฐานข้อมูล (แล้วแต่เงื่อนไขการดึงมีการใช้ WHERE clause หรือไม่ แล้ว WHERE clause นั้นมีการใช้ index ที่สร้างไว้แล้วหรือไม่) มาเพื่อสแกนหาข้อมูลที่ต้องการอยู่ดี     แต่ถ้าเราเขียนโปรแกรมให้ส่งคำสั่งไปยังตัว MS SQL ทำงานแทน (ซึ่งปกติเครื่องเซิฟเวอร์จะทำงานเร็วกว่า client อยู่แล้ว) เฉพาะเรคอร์ดผลลัพธ์สุดท้ายที่ต้องการจะถูกส่งมายังเครื่อง client เท่านั้น ดังนั้นจึงเร็วกว่าวิธีเดิมๆครับ แต่การส่งคำสั่งไปทำงานที่เซิฟเวอร์ หลายๆอย่างที่เราเคยทำงานได้ง่ายๆ ก็ต้องเขียนโปรแกรมจัดการเยอะขึ้น ยุ่งยากขึ้นด้วยครับ
5 @R18905
ขอบคุณครับถ้าเช่นนั้นการแปลงฐานข้อมูลจาก access ไปเป็น sql ด้วยการใช้ wizard upsizing ของ access ก็ทำให้เรามีฐานข้อมูลที่ใหญ่ขึ้นได้เท่านั้นเองสิครับอาจารย์
6 @R18910
ประโยชน์ที่ได้จากการใช้ SQL Server ยังมีอีกเยอะ โดยเฉพาะอย่างยิ่งเรื่องความเสถียรของฐานข้อมูลครับ ส่วนเรื่องความเร็วของ application ของเรา เราต้องปรับแต่งโปรแกรมเรา ถึงจะใช้ประโยชน์ได้อย่างเต็มที่ครับ ลองดูก่อนครับว่าถ้าไม่ปรับแต่งเลย ความเร็วโดยรวมยังยอมรับได้ไหม ถ้าได้ก็ไม่ต้องไปเสียเวลาลงทุนทำอะไรกับมัน แต่ถ้ารับไม่ได้หรือถ้าเป็นโปรเจคใหม่ ก็ค่อยปรับแต่งโปรแกรมครับ

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

Move Access data to a SQL Server database by using the Upsizing Wizard

SQL SERVER OVERVIEW

Optimizing Microsoft Office Access Applications Linked to SQL Server

What are the main differences between Access and SQL Server?

Convert Microsoft Access (JET SQL) to SQL Server (T-SQL) Cheatsheet

หมายเหตุ : Upsizing Wirad ถูกยกเลิกใน Access 2013 แล้วครับ ต้องไปใช้ SQL Server Import and Export Wizard จากตัว SQL Server แทน (ไม่แน่ใจว่าเริ่มตั้งแต่ SQL Server เวอร์ชั่นอะไร)
7 @R18914
ขอแก้ไข
           ****ข้อ 4 ผมทำ Map network Drive.. บนเครื่อง server ตั้งชื่อ drive Z: และเลือก Folder ที่เก็บข้อมูล be.accdb
            ****บนเครื่อง Client ทำการเชื่อโยง... ตัวจัดการตารางเชื่อมโยง... ของ Access

เรียนถามอาจารย์** สันติสุข**
            ***** IP ใส่ตรงไหนครับ***
            ***** ถ้าผมปรับแต่งโปรแกรมเดิมจะเริ่มต้นอย่างไรจึงจะเสถียร ซึ่งตารางเก็บฐานข้อมูลชายไทยแล้ว 50,000 คน และจะเก็บทุก ๆ ปี

เรียนถามอาจารย์**oong2521
            *****วิธี link table ผ่าน odbc ทำอย่างไรครับ ช่วยบอกวิธีทำหน่อยเผื่อเป็นอีกวิธีที่เป็นทางเลือกในการใช้งาน
8 @R18920
IP ใส่ตรง เวลาเราทำการลิงค์เทเบิล เราจะไปเลือกไดรฟ์แล้วก็ไฟล์ .accdb จากไดอะล็อกซ์บ็อกซ์ ที่หัวของไดอะล็อกซ์บ็อกซ์ที่ขึ้นมาให้เราเลือกไฟล์ตรงนั้นแหล่ะครับที่ให้เราใส่ \\IP ของเซิฟเวอร์\พาธ\be.accdb

ส่วนขนาดของฐานข้อมูลเมื่อต่อไปข้อมูลเยอะขึ้นจะเป็นเท่าไหร่นั้น เราก็คงพอคำนวนคร่าวๆได้จากอัตราส่วนเนื้อที่บนดิสก์ที่ใช้ไปในปัจจุบันของไฟล์ be.accdb กับจำนวนเรคอร์ดที่มีครับ เก็บสัก 10 ปีก็เพิ่งจะ 5 แสนคนเอง ซึ่งถือว่าไม่ได้มากอะไรเลยครับ

ความเสถียรที่ผมเขียนไปหมายถึงความเสถียรของตัวฐานข้อมูลเอง (be.accdb) ที่เราจะได้จากความสามารถของ SQL Server อยู่แล้ว ไม่ต้องเขียนโปรแกรมใดๆ ถ้าอยากปรับแต่ง นั่นคือปรับแต่งโปรแกรม ก็ตามลิงค์ที่ผมให้ไปนั่นแหล่ะครับ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3081s