Home Database Mysql Tutorial Mysql innodb configures raw to bypass the kernel buffer and realize direct I/O under Linux

Mysql innodb configures raw to bypass the kernel buffer and realize direct I/O under Linux

Jul 04, 2017 pm 07:31 PM
innodb linux mysql

(reposted from linux community)

MySQL's InnoDB storage engine can not only cache indexes, but also cache data. If its tables and indexes are stored on raw devices (Raw Device), they can bypass the cache and buffer of the file system and access them directly. disk, it will greatly reduce the burden on the Linux file system and significantly improve system performance.

In addition, from the optimization principles of bare devices in database applications, we can also see a basic direction of optimizing the database, which is how to reduce the heavy burden on the file system caused by the unique I/O-intensive access of the database. . Therefore, even on existing file system-based database storage engines, special file system mounting methods can be considered.
For example, using noatime as a mount parameter for a partition that stores database files can improve system performance to a certain extent because access times are no longer recorded.

──────────────────────────────────────────── ──────────────────────────────
The latest system environment configured in this note:
───── ─────────────────────────────────────────────── ───────────────────────
OS: CentOS6
HDD: /dev/sdc /dev/sdd
RAW: /dev/ raw/raw1 /dev/raw/raw2
MySQL: 5.1.61
USER: mysql:mysql

Refer to the configuration guide of the official website:

──────────────────────────────────────────── ──────────────────────────────
(1) Prepare the raw device
─ ─────────────────────────────────────────────── ────────────────────────────
Before using a raw device, you must first bind the disk device to the raw device:

# /bin/raw /dev/raw/raw1 /dev/sdc;
--------------------------- -------------------------------------------------- --
/dev/raw/raw1: bound to major 8, minor 32
---------------------------- -------------------------------------------------- --

Then bind another raw device, and then give the running user of your MySQL database the right to read and write the raw device:

# /bin/raw /dev/raw/raw2 /dev/sdd;
# chown root:mysql /dev/raw/raw1 /dev/raw/raw2;
# chmod 0660 /dev/raw /raw1 /dev/raw/raw2;


# /bin/raw -qa;
# /bin/raw -q /dev/raw/raw1;
# /bin/ls -l /dev/raw/raw1;
# blockdev --report /dev/raw/raw1;
# blockdev --report /dev/sdc;


vi /etc/udev/rules.d/60-raw.rules;
------------------------- -------------------------------------------------- -----
ACTION=="add", KERNEL=="sdc", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw1 % N"
ACTION=="add", KERNEL=="sdd", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw2 %N"
------------------------------------------------ --------------------------------
Note: this make sure device /dev/sdc and /dev/sdd will bind automatically when server reboot.

# vi /etc/udev/rules.d/41-local-permissions-rules;

──────────────────────────────────────────── ───────────────────────────────
(2) If necessary, back up the old InnoDB data table
───────────────────────────────────────────── ───────────────────────────────
If your database is already running and the existing data is stored in the old InnoDB engine Among them, if you need to migrate,
please use the mysqldump command to export your data before closing the database, and then import it after the new engine is configured.

You can refer to the following SQL commands to view and export your InnoDB data table:

mysql> SELECT table_schema,table_name,engine FROM INFORMATION_SCHEMA.TABLES;
mysql> SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine='InnoDB';

If necessary, you can use mysqldump to export data. Please refer to the following format (please use the corresponding database and table names):

mysqldump -u root -p -h localhost [database].[table] > database.table.sql

Note: You must export the old data table by table.

──────────────────────────────────────────── ──────────────────────────────
(3) MySQL configuration during initialization phase
───── ─────────────────────────────────────────────── ───────────────────────
When you create a new data file, put the keyword newraw
immediately after the data file size in innodb_data_file_path:

# vi /etc/my.cnf;
---------------------------------- ---------------------------------------------
[mysqld ]
innodb_buffer_pool_size=128M
innodb_data_home_dir=
innodb_data_file_path=/dev/raw/raw1:64Mnewraw;/dev/raw/raw2:64Mnewraw
------------- -------------------------------------------------- ------------------

postscript:

mysql also provides another implementation method, configure innodb_flush_method

in my.ini

innodb_flush_method = O_DIRECT

This can also achieve direct I/O

The above is the detailed content of Mysql innodb configures raw to bypass the kernel buffer and realize direct I/O under Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1269
29
C# Tutorial
1249
24
Explain the purpose of foreign keys in MySQL. Explain the purpose of foreign keys in MySQL. Apr 25, 2025 am 12:17 AM

In MySQL, the function of foreign keys is to establish the relationship between tables and ensure the consistency and integrity of the data. Foreign keys maintain the effectiveness of data through reference integrity checks and cascading operations. Pay attention to performance optimization and avoid common errors when using them.

Compare and contrast MySQL and MariaDB. Compare and contrast MySQL and MariaDB. Apr 26, 2025 am 12:08 AM

The main difference between MySQL and MariaDB is performance, functionality and license: 1. MySQL is developed by Oracle, and MariaDB is its fork. 2. MariaDB may perform better in high load environments. 3.MariaDB provides more storage engines and functions. 4.MySQL adopts a dual license, and MariaDB is completely open source. The existing infrastructure, performance requirements, functional requirements and license costs should be taken into account when choosing.

SQL vs. MySQL: Clarifying the Relationship Between the Two SQL vs. MySQL: Clarifying the Relationship Between the Two Apr 24, 2025 am 12:02 AM

SQL is a standard language for managing relational databases, while MySQL is a database management system that uses SQL. SQL defines ways to interact with a database, including CRUD operations, while MySQL implements the SQL standard and provides additional features such as stored procedures and triggers.

MySQL: The Database, phpMyAdmin: The Management Interface MySQL: The Database, phpMyAdmin: The Management Interface Apr 29, 2025 am 12:44 AM

MySQL and phpMyAdmin can be effectively managed through the following steps: 1. Create and delete database: Just click in phpMyAdmin to complete. 2. Manage tables: You can create tables, modify structures, and add indexes. 3. Data operation: Supports inserting, updating, deleting data and executing SQL queries. 4. Import and export data: Supports SQL, CSV, XML and other formats. 5. Optimization and monitoring: Use the OPTIMIZETABLE command to optimize tables and use query analyzers and monitoring tools to solve performance problems.

How to understand DMA operations in C? How to understand DMA operations in C? Apr 28, 2025 pm 10:09 PM

DMA in C refers to DirectMemoryAccess, a direct memory access technology, allowing hardware devices to directly transmit data to memory without CPU intervention. 1) DMA operation is highly dependent on hardware devices and drivers, and the implementation method varies from system to system. 2) Direct access to memory may bring security risks, and the correctness and security of the code must be ensured. 3) DMA can improve performance, but improper use may lead to degradation of system performance. Through practice and learning, we can master the skills of using DMA and maximize its effectiveness in scenarios such as high-speed data transmission and real-time signal processing.

macOS vs. Linux: Exploring the Differences and Similarities macOS vs. Linux: Exploring the Differences and Similarities Apr 25, 2025 am 12:03 AM

macOSandLinuxbothofferuniquestrengths:macOSprovidesauser-friendlyexperiencewithexcellenthardwareintegration,whileLinuxexcelsinflexibilityandcommunitysupport.macOS,developedbyApple,isknownforitssleekinterfaceandecosystemintegration,whereasLinux,beingo

How does MySQL differ from Oracle? How does MySQL differ from Oracle? Apr 22, 2025 pm 05:57 PM

MySQL is suitable for rapid development and small and medium-sized applications, while Oracle is suitable for large enterprises and high availability needs. 1) MySQL is open source and easy to use, suitable for web applications and small and medium-sized enterprises. 2) Oracle is powerful and suitable for large enterprises and government agencies. 3) MySQL supports a variety of storage engines, and Oracle provides rich enterprise-level functions.

How to handle high DPI display in C? How to handle high DPI display in C? Apr 28, 2025 pm 09:57 PM

Handling high DPI display in C can be achieved through the following steps: 1) Understand DPI and scaling, use the operating system API to obtain DPI information and adjust the graphics output; 2) Handle cross-platform compatibility, use cross-platform graphics libraries such as SDL or Qt; 3) Perform performance optimization, improve performance through cache, hardware acceleration, and dynamic adjustment of the details level; 4) Solve common problems, such as blurred text and interface elements are too small, and solve by correctly applying DPI scaling.

See all articles