mysql数据库原理_mysql数据库原理

### mysql为单进程多线程

1)守护进程

2)应用线程

网站的瓶颈一般在数据服务器。

### mysql产品选择

`mysql-client` mysql命令行工具客户端

`mysql-server` mysql服务器端

`mysql-deve`l mysql-client需要的库函数

### 程序设计语言如何与mysql交互?

嵌入式SQL:与动态SQL类似,但其语言必须在程序编译时完全确定下来;

` ODBC`(C)开放数据库互连(Open Database Connectivity

动态SQL:程序设计语言使用函数或者方法与RDBMS建立连接,向SQL服务器发送查询语句,并将结果保存到变量中

` JDBC`(Java)java数据库连接 Java Data Base Connectivity

### 插件式存储引擎

`5.5.8`:MyISAM,适合于查询比较多,修改比较少的数据库,可作为数据仓库。不支持事务;

`5.5.8后`:InnoDB,适合于在线事务处理系统;

## 数据库管理系统结构

### 简化版

![](http://i2.muimg.com/567571/f0d317b35d2e8f6a.png)

### 完整版

![](http://i1.piimg.com/567571/9a6d2d2852839e22.png)

### 官方版

![](http://i4.buimg.com/567571/6be42db89b6e31d5.png)

`连接管理器`监听在某个端口-->线程管理器-->用户模块-->命令分发模块

`解析器`:解析查询,并生成解析树,交给特定模块完成

`查询优化器`:优化查询策略,性能关键模块

`访问控制器`:负责判定操作是否有权限执行

`表管理器`:创建、读取、修改表结构定义文件,维护表描述符高速缓存(缓存在内存中),管理表锁

`表定义模块`:创建、删除、重命名、移除、更新和插入表等操作

`表修复模块`:检查、修改、备份、恢复、优化(碎片)、解析等操作

### 加载数据

最小单位是`磁盘块`,加载到内存中再做处理

数据块由存储引擎管理(Storage Engine),可以由多个磁盘块组成一个数据块

#### 文件中记录的组织

> * 堆文件组织:一条记录可以放在文件中的任意位置;更新数据方便,查询成本大,

> * 顺序文件组织:根据“搜索码”值顺序进行存放;更新数据成本比较大(使用指针,记录行的位置,数据更新时,直接更改指针,但也会带来问题:物理上相邻的数据,在逻辑上可能不相邻,读取数据时,由于逻辑数据不相邻,可能会读取多个磁盘块,因此要执行多次I/O操作,速度较慢),查询方便

> * 散列文件组织:散列函数:/4,不当的散列函数,可能使存储分配不均

### 数据字典 Data Dictionary

#### 关系的元数据

`关系名称` `字段名称` `字段类型`和`长度` `视图` `约束`

#### MySQL通配符

_:任意单个字符

%:任意长度的任意字符

#### 内置函数

user();database();version();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值