MySQL架构和存储引擎、系统默认数据库介绍

王柳  金牌会员 | 2022-9-17 08:38:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

MySQL架构:

采用C/S架构,即客户端/服务器。客户端和服务器区分开,通过客户端发送请求来和服务器交互。
过程:


  • 用户通过开发的应用程序来访问数据库(C/S),应用程序通过连接器(connecter)连接到数据库。
  • 连接器包含了各种开发语言的接口,连接完成后MySQL会分配一个线程提供服务,执行对应操作的时候就会调用MySQL定义好的接口组件来接收请求。
  • 把sql语句解析完成后,结合当前数据库状态来优化对应操作。
    mysql利用caches和buffer来提高系统系统性能。
  • 数据读出和写入的时候会通过存储引擎来选择数据的相关操作,最后写入磁盘或内存。
目前主流的存储引擎:

存储引擎:MySQL管理数据文件的一种技术。

  • myisam
  • innodb
查看系统当前支持的存储引擎:show engines;

myisam和innodb的区别:


  • 最大支持数据量:myisam>innodb
  • 事务:myisam不支持,
  • 锁:innodb支持行级锁,myisam只支持表锁(整张表加锁)
  • MVCC(多版本并发控制):允许多用户进行访问(并发),myisam不支持,
  • 聚集索引:innodb支持
  • 缓存:innodb支持
  • 外键:myisam不支持
myisam和innodb特点:


  • myisam特点:myisam功能简单,所以数据访问快
  • innodb:功能丰富,效率没有myisam高
  1. mysql5.5版本以前使用的是myisam作为默认存储引擎,5.5以后使用的默认存储引擎就是innodb了。
复制代码
myisam和innodb对应的数据库文件:

myisam:


  • .frm文件:负责表格式定义
  • .MYD文件:存放表的数据文件
  • .MYI:存放表的索引文件
innodb:


  • .frm:存放表的定义文件
  • idb:存放表的索引和数据文件
  1. MySQL5.5以前:
  2. 早期innodb类型的数据表只有一个frm文件,而数据文件只有一个,这个数据文件存放了innodb类型的所有表的数据。
  3. 修改方法: 启用:innodb_file_per_table=ON (MariaDB 5.5以后版是默认值)
  4. mysql> select @@innodb_file_per_table;
  5. +-------------------------+
  6. | @@innodb_file_per_table |
  7. +-------------------------+
  8. |                       1 |
  9. +-------------------------+
  10. 1 row in set (0.00 sec)
复制代码
修改存储引擎的方法:
  1. 方法1:
  2. vim /etc/my.cnf
  3. [mysqld]
  4. default_storage_engine= InnoDB
  5. 方法2:
  6. CREATE TABLE tb_name(... ) ENGINE=InnoDB;
  7. ALTER TABLE tb_name ENGINE=InnoDB;
复制代码
查看指定表的属性信息:


  • show table status from tb_name\G
  • show table status like 'tb_name%'
特殊存储引擎:


  • Performance_Schema:系统自带的数据库Performance_Schema使用的存储引擎
  • Memory:数据存放在内存中,主要存放一些临时数据。information_schema这个系统数据库就是使用的memory存储引擎。
系统数据库:四个


  • mysql:mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
  • Performance_Schema:MySQL 5.5开始新增的数据库,用于收集数据库服务器性能参数
  • information_schema:MySQL 5.0之后产生的,一个虚拟数据库,物理上并不存在information_schema数据库,存放MySQL的元数据信息。
  • sys 数据库:MySQL5.7之后新增加的数据库,库中所有数据源来自performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容
MySQL的配置和状态


  • 服务器选项:在MySQL运行的时候命令行中添加也可以在配置文件中添加
  • MySQL服务器系统变量:可以在环境中通过set命令修改
  • 系统的状态变量:记录数据库系统的当前状态
MySQL服务器选项:

设置服务器选项方法:


  • 命令行设置
  1. shell> /usr/bin/mysqld_safe --skip-name-resolve=1
  2. shell> /usr/libexec/mysqld --basedir=/
复制代码

  • 配置文件设置
  1. vim /etc/my.cnf
  2. [mysqld]
  3. skip_name_resolve=1
  4. skip-grant-tables
复制代码
查看MySQL支持的选项:
  1. [root@CentOS8 ~]#  /usr/libexec/mysqld --verbose --help
复制代码
MySQL服务器系统变量:

服务器系统变量:可以分全局和会话两种
查看系统中的变量:
  1. SHOW GLOBAL VARIABLES; #只查看global变量
  2. SHOW [SESSION] VARIABLES;#查看所有变量(包括global和session)
  3. #查看指定的系统变量
  4. SHOW VARIABLES LIKE 'VAR_NAME';
  5. SELECT @@VAR_NAME;
复制代码
修改服务器变量的值:
  1. 修改全局变量:仅对修改后新创建的会话有效;对已经建立的会话无效
  2. SET GLOBAL system_var_name=value;
  3. SET @@global.system_var_name=value;
  4. 修改会话变量:
  5. SET [SESSION] system_var_name=value;
  6. SET @@[session.]system_var_name=value;
  7. #查看set命令用法:help set
复制代码
MySQL系统的状态变量:


  • 服务器状态变量:分全局和会话两种
  • 状态变量(只读):用于保存mysqld运行中的统计数据的变量,不可更改
服务器的状态变量查看:
  1. mysql> show status\G
复制代码
区分服务器的选项和变量:

通过官方文档查看。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表