MySQL体系结构以及MySQL配置方式

理解MySQL体系结构
mysql的需要安装服务端和客户端,两者可以分开按需安装。mysql服务端进程(mysqld)有个连接层会处理客户端的连接,它实质上是一个多线程的单进程服务,管理对磁盘和内存中的数据库访问。

[1]mysqld服务进程
前面说到,mysqld进程有连接层,其实还有SQL层和存储层,属于三层架构体系。在连接层中,会处理和客户端的通信协议,如tcp socket或者本地unix socket。

默认选项是-h localhost,使用本地unix socket,这种方式的效率比较高,因为数据不用加密,也不会发送到网络上传输,因此也不会经过防火墙,不过选项-h 127.0.0.1则是通过tcp socket访问。

接着是SQL层,SQL层的内容包括解析SQL语句,验证连接的用户是否有足够的权限执行语句,并且会为每个查询语句创建最佳执行计划。SQL层还会记录查询日志,用于审计分析。

最后是存储层,InnoDB是默认的存储引擎,并且推荐使用。存储层执行实际的数据操作,通过访问存储介质并执行解析后的SQL语句。

[2]数据库的定义
InnoDB引擎基于磁盘,支持外键约束和事务,并且支持行级锁定;MEMORY引擎则是基于内存,数据在服务器重启后不可用。那么mysql的数据(基于InnoDB)究竟放在哪里呢?答案是/var/lib/mysql目录中。

每个数据库都会在该目录有个目录,用于存储特定的数据文件,如.ibd文件,包含表数据和元数据。元数据包括列定义,索引定义等,用于定义数据的结构、属性、关系和约束条件。

在数据库中,元数据相当于系统的“蓝图”,记录所有数据库对象的定义信息,数据字典则是包含所有元数据的档案资料库。​​​

表空间是 MySQL 中​​存储表数据和索引的物理文件​,是数据库中的逻辑存储单元(如test库),对应磁盘上的一个或多个文件(如.ibd文件)。系统表空间默认名为ibdata1,存储数据字典和缓冲区。

配置MySQL​
配置文件是描述mysqld服务是怎么运行的,包括数据目录,日志目录的位置,系统变量值等等。

[1]设置加载的配置文件
在linux系统中,默认的配置文件是/etc/my.cnf,家目录的~/.mf.cnf优先级也更高。可以通过–defaults-file在mysqld运行时从指定的配置文件中获取配置,通过–datadir=指定数据目录。

当然这个配置文件还可以定义客户端如何运行,编辑mf.cnf文件的[mysql]选项组,可以约束mysql客户端登录的行为,甚至可以将账号密码写上去。也可以使用mysql_config_editor来设置账号密码,默认保存在~/.mylogin.cnf文件中,并且使用cat查看乱码。

[2]查看和修改系统变量
系统变量主要包括全局和会话两种,使用show variables 来查看变量(默认是session,使用show global查看全局),使用set global来修改全局变量。不过这些都是动态修改的参数,随mysqld重启而丢失。

使用set persist则是永久修改,会记录到配置文件中,同时可以用reset persist动态撤销修改。`mysqld-auto.cnf`是 MySQL 8.0+ 引入的​动态持久化配置文件​​,用于存储通过 `SET PERSIST`或 `SET PERSIST_ONLY`命令修改的全局变量。

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » MySQL体系结构以及MySQL配置方式

提供最优质的资源集合

立即查看 了解详情