You can use raw disk partitions as data files in the system tablespace. Using a raw disk, you can perform nonbuffered I/O on Windows and on some Unix systems without filesystem overhead. Perform tests with and without raw partitions to verify whether this change actually improves performance on your system.
When you create a new data file, put the keyword
newraw
immediately after the data file size
in innodb_data_file_path
. The
partition must be at least as large as the size that you
specify. Note that 1MB in InnoDB
is 1024
× 1024 bytes, whereas 1MB in disk specifications usually
means 1,000,000 bytes.
[mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
The next time you start the server, InnoDB
notices the newraw
keyword and initializes
the new partition. However, do not create or change any
InnoDB
tables yet. Otherwise, when you next
restart the server, InnoDB
reinitializes the
partition and your changes are lost. (As a safety measure
InnoDB
prevents users from modifying data
when any partition with newraw
is specified.)
After InnoDB
has initialized the new
partition, stop the server, change newraw
in
the data file specification to raw
:
[mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw
Then restart the server and InnoDB
permits
changes to be made.
On Windows, you can allocate a disk partition as a data file like this:
[mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Gnewraw
The //./
corresponds to the Windows syntax
of \\.\
for accessing physical drives.
When you use a raw disk partition, be sure that it has
permissions that enable read and write access by the account
used for running the MySQL server. For example, if you run the
server as the mysql
user, the partition must
permit read and write access to mysql
. If you
run the server with the --memlock
option, the server must be run as root
, so
the partition must permit access to root
.