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体系结构

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域套接字