## MySQL
###

SQL (ACID)
****
MySQLPostgreSQLOracleSQL ServerSQLite SQLite ......
### MySQL

**MySQL **
MySQL MySQL GPL(General Public License) MySQL **3306**
##
###
** MySQL **
```sql
mysql> show engines;
```

MySQL InnoDB, 5.7 InnoDB InnoDB
** MySQL **
```sql
mysql> show variables like '%storage_engine%';
```
****
```sql
show table status like "table_name" ;
```

### MyISAM InnoDB

MySQL 5.5 MyISAM MySQL
MyISAM MyISAM
5.5 MySQL InnoDBMySQL 5.5 InnoDB InnoDB MySQL
**1.**
MyISAM (table-level locking) InnoDB (row-level locking),
MyISAM InnoDB
**2.**
MyISAM
InnoDB (commit)(rollback)
**3.**
MyISAM InnoDB
**4.**
MyISAM InnoDB
InnoDB `redo log`
- MySQL InnoDB **redo log()** **** **undo log()** ****
- MySQL InnoDB ******MVCC** **`REPEATABLE-READ`**
-
**5. MVCC**
MyISAM InnoDB
MyISAM
MVCC
### MyISAM InnoDB
InnoDB MyISAM MyISAM ~
MySQL :
> MyISAM InnoDB InnoDB MyISAM
InnoDB MyISAM
MyISAM MySQL
## InnoDB
**MyISAM InnoDB **
- MyISAM (table-level locking)
- InnoDB (row-level locking),
****
- **** MySQL **** MyISAM InnoDB
- **** MySQL ****
**InnoDB **
- Record lock
- Gap lock
- Next-key lockrecord+gap
##
MySQL 8.0
`my.cnf` MySQL
```properties
query_cache_type=1
query_cache_size=600000
```
MySQL
```properties
set global query_cache_type=1;
set global query_cache_size=600000;
```
****MySQL
MySQL
**** MB ** sql_cache sql_no_cache **
```sql
select sql_no_cache count(*) from usr;
```
##
###
****
****
1000
1. 1000
2. 1000
###
********
****
SQL **,**
```sql
#
START TRANSACTION;
# SQL
SQL1,SQL2...
##
COMMIT;
```

`MySQL``SQL Server``Oracle` **ACID**

### ACID
1. ****`Atomicity`
2. ****`Consistency`
3. ****`Isolation`
4. ****`Durabilily`
****
MySQL InnoDB
MySQL InnoDB **redo log()** **** **undo log()** ****
MySQL InnoDB ******MVCC** **`REPEATABLE-READ`**
### ?
- **Dirty read:**
- **Lost to modify:** 1 A=20 2 A=20 1 A=A-1 2 A=A-1 A=19 1
- **Unrepeatableread:**
- **Phantom read:** T1T2T1
****
### ?
SQL
- **READ-UNCOMMITTED()** ****
- **READ-COMMITTED()** ****
- **REPEATABLE-READ()** ****
- **SERIALIZABLE()** ACID ****
---
| | | | |
| :--------------: | :--: | :--------: | :--: |
| READ-UNCOMMITTED | | | |
| READ-COMMITTED | | | |
| REPEATABLE-READ | | | |
| SERIALIZABLE | | | |
### MySQL ?
MySQL InnoDB **REPEATABLE-READ**`SELECT @@tx_isolation;`MySQL 8.0 `SELECT @@transaction_isolation;`
```sql
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
```
~~ SQL InnoDB **REPEATABLE-READ** Next-Key Lock ( SQL Server) InnoDB **REPEATABLE-READ** SQL **SERIALIZABLE()** ~~
**MySQL InnoDB REPEATABLE-READ Next-Key Locks**
**READ-COMMITTED()** InnoDB **REPEAaTABLE-READ**
InnoDB **** **SERIALIZABLE()**
(MySQL InnoDB ( 2 )7.7 )
> InnoDB XA XA transactional resources ACID InnoDB SERIALIZABLE
##
- MySQL
- https://www.omnisci.com/technical-glossary/relational-database