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

云原生俱乐部-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.lryc.cn/news/624690.html

相关文章:

  • 【前端面试题】JavaScript 核心知识点解析(第十四题解析到第二十二题)
  • 【牛客刷题】正六边形阴影面积计算
  • FastRTSP介绍
  • 微电网管控系统中python多线程缓存与SQLite多数据库文件连接池实践总结(含源码)
  • 多台服务器批量发布arcgisserver服务并缓存切片
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级(401)
  • Python入门Day18:模块与包(module package)
  • Spring Boot + Spring Kafka 集成
  • SMTPman,smtp ssl助力安全高效邮件传输!
  • Java 中表示数据集的常用集合类
  • 低端设备加载webp ANR
  • 安全存储之 SAES+HUK 使用技巧和常见问题 LAT1543
  • Rust 教程之简介000
  • CSS:水平垂直居中
  • 【银河麒麟桌面系统】配置匿名文件夹与用户认证共享服务
  • 2025年秋招Java后端面试场景题+八股文题目
  • AI 推荐系统云端部署实战:基于亚马逊云科技免费资源的工程实现
  • 从财务整合到患者管理:德国医疗集团 Asklepios完成 SAP S/4HANA 全链条升级路径
  • CAN总线的安全性
  • Linux小白加油站,第三周周考
  • 世界模型之自动驾驶
  • 想找出版社出书?这样选就对了!
  • 《P1195 口袋的天空》
  • OVS:ovn是如何支持组播的?
  • GPT-5之后:当大模型更新不再是唯一焦点
  • 多硬盘构建lvm存储
  • GPT-5博士级AI使用教程及国内平替方案
  • 基于SpringBoot+Uniapp的互联网订餐小程序(协同过滤算法、Echarts图形化分析)
  • “Let it Crash“:分布式系统设计的涅槃重生哲学
  • 【笔记】位错的定义和分类