当前位置: 首页 > java >正文

云原生俱乐部-mysql知识点归纳(1)

本来想在写mysql之前先把shell写完的,但是当我看到shell中的函数和变量的时候,我想还是等等再写吧,因为不太熟,这样子写很煎熬。至于mysql的话,更多的则是理论,很多知识点都需要记住的,大部分时候都会问到。


这个章节主要讲讲理解MySQL体系结构以及配置MySQL两部分内容,在前半部分,主要讲的是mysql如何处理、存储和传输数据,并且会描述数据字典,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`命令修改的全局变量。

http://www.xdnf.cn/news/18129.html

相关文章:

  • cesium中实时获取鼠标精确坐标和高度
  • Vue深入组件:组件事件详解1
  • Laravel中如何使用php-casbin
  • OSCP - Proving Grounds - Vanity
  • 云计算核心技术之容器技术
  • SAP 数据脱敏工具:SNP TDO如何满足新颁敏感信息政策要求
  • 【C语言篇】操作符详解
  • 电子电气架构 --- 软件开发数字化转型
  • Python函数:装饰器
  • 三高架构杂谈
  • 软件定义汽车---创新与差异化之路
  • Jenkins全链路教程——Jenkins调用Maven构建项目
  • Kafka文件存储机制
  • 深入浅出决策树
  • (二十)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(下)——实战篇
  • Google 的 Opal:重新定义自动化的 AI 平台
  • Git版本控制与协作
  • 4.9 配置 开发服务器 和 请求代理
  • 汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
  • 使用Idea安装JDK
  • 从零开始,系统学习AI与机器学习:一份真诚的学习路线图
  • 容器化 Android 开发效率:cpolar 内网穿透服务优化远程协作流程
  • Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
  • WPF中BindingList<T>和List<T>
  • Conda技巧:修改Conda环境目录,节省系统盘空间
  • 学习:各种不同类型的for循环遍历,forEach/map/filter/every/some/includes/reduce的详细用法(1)
  • 【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
  • [Linux]学习笔记系列 --[mm][list_lru]
  • Redis-缓存-穿透-布隆过滤器
  • 测试Windows10IoT系统是否可以正常运行KingSCSDA3.8软件