
##Free learning recommendation: mysql video tutorial
Preface
As long as you are a programmer who has been exposed to MySQL, you have more or less heard of redo log (redo log) and binlog (archive log). Today, let’s share the uses and differences between these two logs. Simply put, redo log is a log unique to InnoDB. If you use other storage engines, there will be no redo log, only binlog. Binlog is the log of the server layer of MySQL. No matter what storage engine is used, there will be a binlog. So, why do we need redo log and binlog? Can’t everything be solved with just one binlog? Next, let’s take a detailed look at the difference between redo log and binlog.redo log
In MySQL, if you want to update a statement, you need to bring update conditions, such asupdate T set name = 'god-jiang' where id=6, generally the statement with id=6 is queried first, and then the update operation is performed.
If the number of updates is 100, 1,000 or even 10,000, each update needs to be written to the disk. Then the corresponding record must be found on the disk and then updated. The IO cost and search cost of the entire process are too high. In order to solve this problem, the designers of MySQL used WAL technology to solve it. The full name of WAL isWrite Ahead Logging, which means writing the log first and then writing to the disk.
Specific operation: When a record needs to be updated, the InnoDB engine will first write the record to the redo log and update the memory. At this time, the update is completed. At the same time, the InnoDB engine will update this operation record to the disk at the appropriate time (when the system is idle). This update is often when the system is relatively idle. But the size of the redo log is fixed, and it is impossible to write infinitely all the time. Let us see how MySQL does it.
crash-safe.
The above is the introduction to redo log. After reading this, you can try to ask your company's DBA colleagues whether MySQL can be restored to the state of any second within half a month. The answer will definitely be Yes, this is all thanks to the redo log.binlog
Looking at MySQL as a whole, it is actually divided into two layers, one is the Server layer and the other is the storage engine layer. The redo log discussed above is a log unique to the InnoDB engine, while the binlog is a log belonging to the server layer, also called an archive log.The difference between redo log and binlog
- redo log is unique to the InnoDB engine; binlog is implemented by the Server layer of MySQL and can be used by all engines
- The redo log is a physical log, which records "XXX modifications were made on the XXX data page"; the binlog is a logical log, which records the original logic, and its record is the corresponding SQL statement
- Redo log is written in a loop, and the space will definitely run out, so write pos and check point need to be matched; binlog is written additionally, and it will switch to the next one when it reaches a certain size, and will not overwrite the previous log
Demonstrates the internal process of the executor and the InnoDB engine through a simple update statement
update T set name = 'god-jiang' where id = 6
- Use the executor to retrieve the record with id=6 from the InnoDB engine and then load it into memory
- The executor gets the result returned by the engine, changes the name to 'god-jiang', and then calls the storage engine interface again to write new data
- The engine updates the new data into the memory , and write this update operation to the redo log at the same time. At this time, the redo log is in the prepare state
- The executor generates the binlog of this operation and writes the binlog to the disk
- The executor calls the engine Submit the transaction interface, and change the redo log just written to the commit state, and the update is completed
The corresponding flow chart
Two-phase submission
In fact, both redo log and binlog can be used to represent the status of transaction submission, and two-phase submission is to keep these two states logically consistent.For example: update T set name = ‘god-jiang’ where id = 6What will happen without two-phase submission?
Write redo log first and then binlog. Assume that after writing the redo log, the binlog has not yet been written, and MySQL restarts abnormally at this time. Because the redo log has been written, name=‘god-jiang’ when restoring the system. However, the binlog has not been written, so the binlog does not record this statement. When the binlog is used to restore data at this time, the restored name is the original value, which is different from the redo log.
Similarly, if you write binlog first and then redo log, you will also find that the data recovered by the two logs is different. This inconsistency will lead to master-slave inconsistency online.
Summary
- The redo log can save crash-safe capabilities and ensure that MySQL restarts abnormally and the data is not lost
- The binlog can record the corresponding SQL statements can also ensure that data will not be lost when MySQL restarts abnormally
- The two-stage submission of the transaction can maintain the logical consistency of the data
Related free learning recommendations :mysql database(Video)
The above is the detailed content of Introduction MySQL log redo log and binlog. For more information, please follow other related articles on the PHP Chinese website!
Explain the role of InnoDB redo logs and undo logs.Apr 15, 2025 am 12:16 AMInnoDB uses redologs and undologs to ensure data consistency and reliability. 1.redologs record data page modification to ensure crash recovery and transaction persistence. 2.undologs records the original data value and supports transaction rollback and MVCC.
What are the key metrics to look for in an EXPLAIN output (type, key, rows, Extra)?Apr 15, 2025 am 12:15 AMKey metrics for EXPLAIN commands include type, key, rows, and Extra. 1) The type reflects the access type of the query. The higher the value, the higher the efficiency, such as const is better than ALL. 2) The key displays the index used, and NULL indicates no index. 3) rows estimates the number of scanned rows, affecting query performance. 4) Extra provides additional information, such as Usingfilesort prompts that it needs to be optimized.
What is the Using temporary status in EXPLAIN and how to avoid it?Apr 15, 2025 am 12:14 AMUsingtemporary indicates that the need to create temporary tables in MySQL queries, which are commonly found in ORDERBY using DISTINCT, GROUPBY, or non-indexed columns. You can avoid the occurrence of indexes and rewrite queries and improve query performance. Specifically, when Usingtemporary appears in EXPLAIN output, it means that MySQL needs to create temporary tables to handle queries. This usually occurs when: 1) deduplication or grouping when using DISTINCT or GROUPBY; 2) sort when ORDERBY contains non-index columns; 3) use complex subquery or join operations. Optimization methods include: 1) ORDERBY and GROUPB
Describe the different SQL transaction isolation levels (Read Uncommitted, Read Committed, Repeatable Read, Serializable) and their implications in MySQL/InnoDB.Apr 15, 2025 am 12:11 AMMySQL/InnoDB supports four transaction isolation levels: ReadUncommitted, ReadCommitted, RepeatableRead and Serializable. 1.ReadUncommitted allows reading of uncommitted data, which may cause dirty reading. 2. ReadCommitted avoids dirty reading, but non-repeatable reading may occur. 3.RepeatableRead is the default level, avoiding dirty reading and non-repeatable reading, but phantom reading may occur. 4. Serializable avoids all concurrency problems but reduces concurrency. Choosing the appropriate isolation level requires balancing data consistency and performance requirements.
MySQL vs. Other Databases: Comparing the OptionsApr 15, 2025 am 12:08 AMMySQL is suitable for web applications and content management systems and is popular for its open source, high performance and ease of use. 1) Compared with PostgreSQL, MySQL performs better in simple queries and high concurrent read operations. 2) Compared with Oracle, MySQL is more popular among small and medium-sized enterprises because of its open source and low cost. 3) Compared with Microsoft SQL Server, MySQL is more suitable for cross-platform applications. 4) Unlike MongoDB, MySQL is more suitable for structured data and transaction processing.
How does MySQL index cardinality affect query performance?Apr 14, 2025 am 12:18 AMMySQL index cardinality has a significant impact on query performance: 1. High cardinality index can more effectively narrow the data range and improve query efficiency; 2. Low cardinality index may lead to full table scanning and reduce query performance; 3. In joint index, high cardinality sequences should be placed in front to optimize query.
MySQL: Resources and Tutorials for New UsersApr 14, 2025 am 12:16 AMThe MySQL learning path includes basic knowledge, core concepts, usage examples, and optimization techniques. 1) Understand basic concepts such as tables, rows, columns, and SQL queries. 2) Learn the definition, working principles and advantages of MySQL. 3) Master basic CRUD operations and advanced usage, such as indexes and stored procedures. 4) Familiar with common error debugging and performance optimization suggestions, such as rational use of indexes and optimization queries. Through these steps, you will have a full grasp of the use and optimization of MySQL.
Real-World MySQL: Examples and Use CasesApr 14, 2025 am 12:15 AMMySQL's real-world applications include basic database design and complex query optimization. 1) Basic usage: used to store and manage user data, such as inserting, querying, updating and deleting user information. 2) Advanced usage: Handle complex business logic, such as order and inventory management of e-commerce platforms. 3) Performance optimization: Improve performance by rationally using indexes, partition tables and query caches.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software






