A method of adaptively controlling data access by a data storage system,
in which the sizes and the number of read/write caches are adjusted
according to the size of a data access unit, and a disk drive using the
method. The method of adaptively controlling read access by the data
storage system includes determining whether a data read command is
received from a host device, detecting the size of a data access unit
from an input command pattern when the data read command is received, and
adjusting the sizes of read segments to the detected size of the data
access unit.