ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 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();