VFP Data buffering จะมีอยู่ 2 ประเภท คือ Row Buffering และ Table Buffering โดยมีกลไกการล็อค Records ใน Buffer 2 วิธี คือ Optimistic Locking และ Pessimistic Locking เมื่อผสมกันระหว่างประเภทของ Bufffer(Row/Table )
และ กลไกการล็อค (Optimistic/Pessimistic ) จึงเกิดเป็น 4 buffer modes ( ถ้ารวม None Buffer Setting ก็เป็น 5 modes)
สำหรับ Mode 1- None setting เป็นการ disables กลไก data buffering ของ VFP ใน mode นี้ การ modify ข้อมูล จะกระทำโดยตรง
กับ Record [ ที่จริงจะว่าอย่างนี้ก็ยังไม่ถูกต้องนัก… เนื่องจากมันเกี่ยวข้องกับกลไก File Caching ของ OS. ทั้งฝั่ง client Application และ
ฝั่ง File Server และ เกี่ยวข้องลงไปถึงกลไก Disk Caching ของ Hard Disk/Hard Disk Controller อีกด้วย …. คือว่าที่จริงแล้วมันเขียนลงบน File Caching ของOS. เท่านั้นครับ!!!! ถ้ากลไก File Caching ของ OS Enable ( Enable By Default ทุก OS แต่ปรับแต่งได้ โดยการปรับแต่งในเรื่องของเวลา/ขนาด/จำนวน ให้เหมาะสม หรือ Disable ไปเลยถ้าเป็น Dedicate Database Server ) ]
ในโหมดนี้การ modify data จึงคล้ายกับ FOX 2.X นั่นเองซึ่งส่วนใหญ่เราจะไม่นิยมกระทำกับข้อมูลตรงๆจะอาศัยทำผ่านตัวแปร และ Flock/ Rlock/Unlock
สำหรับ Row buffering Mode ( 2/3) การเขียนข้อมูลจาก Buffer กลับเข้าไปใน Record จะเกิดขึ้นเมื่อมีการเคลื่อน Record Pointer โดยยูสเซอร์/โดยคำสั่งต่างที่ทำให้ Record Pointer เคลื่อนที่…เรียกว่า “implicit updating activity” หรือ ใช้คำสั่ง Tableupdate …..
เรียกว่า “Direct updating activity”
สำหรับ Table buffering Mode ( 4/5) การเขียนข้อมูลจาก Buffer กลับเข้าไปใน Record เมื่อใช้คำสั่ง Tableupdate (การเคลื่อน Record Pointer ไม่มีผลก่อให้เกิด implicit updating activity แต่อย่างใด)
จะว่าไปแล้วกลไก Data buffering ก็เกิดขึ้นเพื่ออำนวยความสะดวกให้กับโปรแกรมเมอร์โดยแท้ ไม่ต้องใช้ตัวแปร ไม่ต้องวุ่นวายเรื่องการล็อค