数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。(来自百度)
实现事务采取了哪些技术以及思想?ACID: atomicity 、consistency 、isolation、durability
原子性使用 undo log ,从而达到回滚;持久性:用 redo log,从而达到故障后恢复;隔离性使用锁以及MVCC,运用的优化思想有读写分离,读读并行,读写并行;一致性:通过回滚,以及恢复,和在并发环境下的隔离做到一致性。
聚簇索引
、修改缓冲区(chage buffer)
、自适应hash索引 AHI
、MVCC(多版本控制)
、多缓冲区池(减少磁盘IO)
、事务(数据安全性)
、行级锁颗粒(并发控制)
、外键
、支持更多复制特性(主从/集群)
、支持热备
、自动故障恢复
、双写机制 double write
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
兼容emoji编码支持
一条查询SQL语句如何执行的?
一条update 语句如何执行?
=》查询数据流程如上图,具体更新过程:
MySQL 常用语句积累
SELECT
table_name,
TABLE_COMMENT
FROM
information_schema. TABLES
WHERE
table_schema = 'xxx'
AND LENGTH(TABLE_COMMENT) > 0;
-- and table_type='base table';
SELECT
TABLE_NAME,
TABLE_ROWS
FROM
`information_schema`.`tables`
WHERE
`table_schema` = 'XXXX';
SELECT
t.TABLE_NAME,
t.TABLE_COMMENT,
c.COLUMN_NAME,
c.COLUMN_TYPE,
c.COLUMN_COMMENT
FROM
information_schema. TABLES t,
INFORMATION_SCHEMA. COLUMNS c
WHERE
c.TABLE_NAME = t.TABLE_NAME
AND t.`TABLE_SCHEMA` = 'xxx'
```sql
– <1. 修改表名 alter table oldTableName rename newTableName; rename table oldTableName to newTableName;
– <2. 添加表列 alter table tableName add column columnName varchar(20);
– <3. 删除表列 alter table tableName drop column columnName;
– <4. 修改表列类型 alter table tableName modify columnName varchar(20) alter table tableName change address address varchar(20)
– <5. 修改表列名(**) alter table tableName change column oldColumnName newColumnName varchar(20)
– <5.1 同时修改多列
alter table
open_api_req_config
MODIFY
column param_name
varchar(1000) DEFAULT NULL COMMENT ‘参数名’,
MODIFY
column bind_field
varchar(1000) DEFAULT NULL COMMENT ‘绑定字段’;
– <6. 添加索引 create index j_wfirst_date_index on ads_wlh_project_plan_3m(j_wfirst_date) comment ‘经营周索引’;
– <7. 删除索引 DROP INDEX <索引名> ON <表名>表名>索引名>
了解数据库基本知识、分类、使用场景
是用于访问和处理数据库的标准的计算机语言。
OLTP(On-Line Transaction Processing)翻译为联机事务处理(数据库应用), OLAP(On-Line Analytical Processing)翻译为联机分析处理(数据仓库应用),从字面上来看OLTP是做事务处理,OLAP是做分析处理。从对数据库操作来看,OLTP主要是对数据的增删改,OLAP是对数据的查询。
github: percona/percona-xtradb-cluster
基于junit ,TestRestTemplate 模拟实际调用 (上传文件/查询单个对象)
NIO/IO复用
// client => MainReactor (select dispatch) => Accpetor => Handler
// client => MainReactor (select dispatch) => Accpetor => Handler(线程池)
// client => MainReactor (select dispatch) /SubReactor => Accpetor => Handler