搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
不正经
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
在顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-与讯飞星火知识大模型对接 实现机器人问答功能_freeswitch cti java开发
2
关于vue项目npm运行报错core-js问题_core-js的版本低了
3
使用python快速搭建接口自动化测试脚本实战总结
4
python数组求和函数_python数据分析之Numpy数据库第三期数组的运算
5
Python从入门到面试:分享一份超详细的学习路线,让你不走弯路_python从入门到能面试开发岗位
6
uni-app开发之钉钉小程序_uniapp开发钉钉小程序案例
7
js如何实现整除_auto js 怎么表示整除
8
Rabbitmq消息的有序性、消息不丢失、不被重复消费_rabbitmq怎么保证消息顺序和重复消费
9
python获取本机IP、mac地址、计算机名_python linux mac地址
10
数据平台的数据仓库与数据湖的扩展与迁移
当前位置:
article
> 正文
全面了解Mysql(一)
作者:不正经 | 2024-06-06 08:35:21
赞
踩
了解mysql
mysql基础定义
数据库和实例是完全不同的,数据库是数据文件之类的,实例是用来操作数据的,一般一个数据库对应一个实例,分布式系统中可能会存在一个数据库对应多个数据实例,启动实例的方式有很多,例如./mysqld_safe&,启动实例首先会去读配置文件,如果不存在使用默认配置,读取配置文件的顺序,可以使用mysql --help |grep my.cnf查看(windows略微有点差别使用mysql --help),如果存在重复的以最后读取的为主。
mysql区别其它数据库的主要地方在于mysql是模块化的,其中存在插件式存储引擎,用户可以自定义或者使用其它引擎,存储引擎是基于表的,我们可以通过show engines来查看当前mysql支持的存储引擎,使用建表语句的最后可以使用ENGINE = INNODB 来指定该表使用的存储引擎。
mysql组成1)连接池组件,2)管理服务和工具组件,3)sql接口组件,4)查询分析器组件,5)优化器组件,6)缓冲组件,7)插件式存储引擎,8)物理文件
连接mysql常用tcp/ip连接,命令是 mysql -u用户 -p密码,但是我们也可以使用命名管道,在配置文件中添加配置–enable-named-pipe还可以使用共享内存配置文件中添加–shared-memory,配置文件客户端添加–protocol=memory,我们还可以使用套接字来访问,使用mysql -u用户 -S 套接字文件,该文件可以在配置文件中指定位置,–socket,同样也可以在命令行中查询show variables like ‘socket’。
2.InnoDB引擎
InnoDB引擎内部管理了多个内存块,同时有多个后台进程负责处理不同任务。
2.1线程
Master Thread负责将缓冲池中的数据异步刷新到磁盘。
IO Thread主要负责IO请求的回调处理,主要有write、read、insert buffer、log IO thread,可以使用参数innodb_线程_io_threads来设置各种IO线程的数量。
Purge Thread主要是用来回收已经使用并分配的undo页使用innodb_purge_threads来设置开启独立线程数量
Page Cleaner Thread用来将脏页进行刷新。
2.2内存
缓存,缓存中分为索引页、数据页、undo页、插入缓存、自适应哈希索引、锁信息、数据字典信息等,对数据库的读取和修改操作都是直接对缓存池的,读的时候只有缓存没命中才会去磁盘上读,写的时候是以一定的频率刷新到磁盘上通过Checkpoint机制,使用innodb_buffer_pool_size可以修改缓存池的大小,缓冲池的实例个数可以由innodb_buffer_pool_instances来设置,数据库的缓存池是通过最近最少使用算法LRU List来管理,即频繁使用的在LRU前端,但是刚刚获取的新页也不是放到前端,而是通过innodb_old_blocks_pct来控制所放的位置,避免将之前的常用页给清除了,同时还引入了innodb_old_blocks_time用来设置多长时间才能够将新页作为频繁使用数据放到前端,当数据库刚刚启动的没有LRU页,整个缓存都是Free页,当需要分页时,在Free 中查询是否有空闲页,有则分出该空闲页,否则根据LRU算法执行当页从尾部移动到头部称之为page made young,因为innodb_old_blocks_time设置导致没有移动称之为page not made young,当页被修改后会在LRU和Flush同时存在,Flush时为了将脏页刷新回磁盘,这些缓存信息我们都可以通过SHOW ENGINE INNODB STATUS来查看。
重做日志缓冲,存储引擎首先将重做日志放入重做日志缓存中,再刷新到日志文件,三种情况刷新(Master Thread每秒刷新一次,事务提交,重做日志缓存池剩余空间小于1/2)。
额外的内存池,用来存储缓存池记录对象。
2.3checkpoint技术
该技术主要为了将重做日志刷新到磁盘,如果总不将重做日志刷新到磁盘,当数据库宕机了,重新应用恢复速度太慢,因此主要解决缓存池不够用时将脏页刷新到磁盘,重做日志不可用时(满了)刷新脏页,重做日志中有LSN来标记版本,在InnoDB内部有两种Checkpoint,数据库关闭时使用 Sharp Checkpoint将所有脏页都刷新回磁盘,数据库正在运行时使用Fuzzy Checkpoint进行一部分脏页刷新到磁盘。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/不正经/article/detail/680264
推荐阅读
article
Springboot计算机
毕业设计
校园
餐厅
点餐
微信
小
程序
——“易
小
食”【附源码】开题+论文+mysq...
因此,开发一款名为“易
小
食”的
校园
餐厅
点餐
微信
小
程序
,旨在通过移动互联网技术,为学生提供便捷、高效的
点餐
服务,改善
校园
餐...
赞
踩
article
Springboot计算机毕业
设计
餐厅
点餐
微信
小
程序
【附源码】开题+论文+mysql+
程序
+部署_基...
随着移动互联网技术的迅猛发展,
微信
小
程序
作为一种新型的应用形态,因其无需下载安装、即用即走的特点,受到了广大用户的青睐。...
赞
踩
article
【
网络安全
的
神秘
世界】
MySQL
...
数据库(Database)是按照数据结构来组织、存储和管理数据
的
仓库。【
网络安全
的
神秘
世界】
MySQL
...
赞
踩
article
mysql
数据
库
导入
,
导出
表
结构及内容_
mysql
导入
表
数据
...
0x01
导入
表
结果
表
数据
登陆到
mysql
,用source命令
导入
1.登陆
数据
库
mysql
-uroot -proot2...
赞
踩
article
MySQL
--
load
data
infile
、
outfile
into及
mysql
dump高效导入导...
本文以Windows下操作为例,Linux也是一样的方法,区别在于路径语法不同而已~创建一个
MySQL
数据库和数据表,方...
赞
踩
article
MySQL
4种
导入
数据
的
方法...
当我们需要将
数据
导入
到
MySQL
数据
库中时,有多种不同
的
方式可供选择,这里介绍
MySQL
常用
的
4种
导入
数据
的
方法。1、I...
赞
踩
article
学生
成绩
管理系统
(
JAVA
_GUI+Mysql)_
java
数据库
学生
成绩
管理系统
代码...
JAVA
界面编程,mysql_
java
数据库
学生
成绩
管理系统
代码
java
数据库
学生
成绩
管理系统
代码 ...
赞
踩
article
实现:
mysql
-
5.7
.42 到
mysql
-
8.2
.0 的
升级
(
rpm
方式)_
升级
数据库
版本...
实现:
mysql
-
5.7
.42 到
mysql
-
8.2
.0 的
升级
(
rpm
方式)_
升级
数据库
版本
升级
数据库
版本 ...
赞
踩
article
数据库
连接池
c++
(
msyql
)
mysql
connect
or
c++
的使用_
mysql
co...
Mysql Connector/C++ 使用介绍一、下载
mysql
connect
or
c++
和 boost库wget ...
赞
踩
article
MySQL
c
onne
c
t
(使用C、C++
链接
)_
mysql
c
c
onne
c
t
or...
我们无法直接使用语言来
链接
数据库,但是数据库要提供
链接
自己的开发库。_
mysql
c
c
onne
c
t
or
mysql
c
...
赞
踩
article
【mySQL】C
++
操作mySQL|mySQL
++
|
Mysql
connector
c
++
_mys...
MySQL其实提供了C实现的接口,而MySQL
++
则是一个C
++
实现的封装MySQL C接口的一个Wrapper,遵循了...
赞
踩
article
【
mySQL
】C
++
操作
mySQL
|
mySQL
++
|
Mysql
connector
c
++
...
目录 通过
mySQL
++
库 简介 安装和配置 linux环境 WIN32环境 C
++
调用mysql
++
通过
Mysql
...
赞
踩
article
mysql
connector
教程
_
MySQL
Connector
/
C++
入门
教程
(上)...
翻译: DarkBull(www.darkbull.net)译者注:该
教程
是一篇介绍如何使用
C++
操作
MySQL
的入门教...
赞
踩
article
C++连接
MySQL
数据库
_
c++
mysql
...
以上配置好之后即可使用与
mysql
数据库
进行交互了。3-3. 链接器->输入->附加依赖项。文件,将其复制到当前项目目录...
赞
踩
article
C++程序
调用
mysql
数据库
_
c++
mysql
.h...
1.int
mysql
_library_init(int argc, char **argv, char **group...
赞
踩
article
C++
编程中
MySQL
的几种基本
使用
方法
_
c++
mysql
语句
写法...
C++
编程中
MySQL
的几种基本
使用
_
c++
mysql
语句
写法
c++
mysql
语句
写法 ...
赞
踩
article
【
MySQL
】C/C++
代码
操作
数据库
_
c++
mysql
...
简单尝试使用c语言的库对
mysql
的数据进行增删改查more。_
c++
mysql
c++
mysql
...
赞
踩
article
【
MySQL
】
使用
C
/
C
++访问
MySQL
_
c++
mysql
...
【
MySQL
】
C
/
C
++访问
MySQL
_
c++
mysql
c++
mysql
...
赞
踩
article
【源码+文档】基于
C++
实现
简易
MySQL
_
c++
mysql
...
Interpreter 模块:为解释器模块,是整个 hnuSQL 的前端,是于用户向接触的部分,用户可以根据自己的需求按...
赞
踩
article
利用C++对
mysql
数据库
进行
操作
_
c++
mysql
appendrow
使用...
目前刚学习了一点
mysql
的知识,自己编了一个简易的与
mysql
连接并
进行
一些
操作
的C++程序。具体讲解都写在了程序的注...
赞
踩
相关标签
spring boot
课程设计
微信小程序
web安全
mysql
数据库
android
java
软件工程
运维
mysql5. 7升级8.2
msyql rpm方式升级
数据库连接池
mysql connector c++
msyql 连接池
c++
linux