1.1 定义数据库和实例
mysql启动
mysql会读取配置然后进行启动,若没有配置则按默认设置进行启动。配置的读取顺序为:
/etc/my.cnf
, /etc/mysql/my.cnf
, ~/.my.cnf
,多个配置中设置了同一参数,则后者覆盖前者。
更多详细内容请阅读4.2.2.2 Using Option Files
配置文件中的datadir
参数
这个参数组合定了数据库所在的路径,linux下默认为/usr/local/mysql/data
, 其实它只是一个指向/opt/mysql_data/
的链接
1.2 MySQL体系结构
MySQL由以下几部分组成:
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- cache组件
- 插件式存储引擎
- 物理文件
重要特点: 插件式的表存储引擎
需要注意的是: 存储引擎是基于表的, 而不是数据库的。
1.3 MySQL存储引擎
InnoDB
- InnoDB存储引擎设计目标为面向在线事务处理( OLTP)的应用
- 支持事务,行锁设计,支持外键,支持非锁定读(默认读操作不加锁)
- 通过使用多版本并发控制(MVCC)来获得高并发性
- 实现了SQL标准的4种隔离级别,默认为REPEATABLE级别
- 使用next-key这种策略避免幻读
- 提供插入缓冲(insert buffer),二次写(double write),自适应哈希索引(adaptive hash index),预读(read ahead)等高性能和高可用的功能
- 采用聚集(clustered)的方式对表中的数据进行存储。每张表的存储都按主键的顺序进行存放;如果没有显示的定义主键,InnoDB会为每行生成一个ROWID,并以此作为主键
省略以下存储引擎的笔记
- MyISAM
- NDB
- Memory
- Archive
- Federated
- Maria
部分笔记参考对应的xmind文件
1.4 各个存储引擎之间的对比
1.5 连接到MySQL
与MySQL的连接,本质上是进程间同信,参考linux进程间通信的相关知识
- 通过TCP/IP
- 通过命名管道和共享内存
- 通过UNIX域套接字