自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 问答 (4)
  • 收藏
  • 关注

原创 编写自用油猴脚本踩坑记录

也算是实现了这个小小的需求吧,不只是闷头干代码,还需要了解的是,油猴的沙盒机制,不然没有办法自动化执行。[油猴脚本开发指南]沙盒机制的前世今生-油猴中文网。

2024-02-19 22:10:53 817 1

原创 Vite+Vue根据环境配置Websocket地址

上回说到,利用vite加载不同mode下的配置文件,可以实现不同运行环境下的参数配置。在前端应用中经常使用到Websocket,其地址同样可以在.env中间中配置。

2024-02-12 11:40:18 507 1

原创 Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面title和logo。vite命令启动项目时,指定mode参数,加载vite.config.ts文件。根目录新建.env.development和.env.production文件。在vite.config.ts中配置代理。package.json配置启动参数。

2024-02-11 22:00:15 559 1

原创 MySQL学习(18)锁

当一个事务想对某条记录进行修改时,会在内存中生成一个结构与之关联,使得记录不能被其他事务访问,这个内存结构就是锁。事务信息:申请获取该锁的事务的trx_id。is_waiting:false表示加锁成功;true表示加锁成功,线程等待。当一个事务获取到某个记录的锁后,另一个事务想要获取该记录的锁,此时第一个事务的is_waiting为false,第二个事务的is_waiting为true。

2023-12-16 16:48:03 840 1

原创 MySQL学习(17)MVCC

每次更新记录后,会将旧值存放到一条undo日志中,随着更新次数的增多,所有的版本都会被roll_pointer属性连接成一个链表,这个链表称为版本链。链表的头节点是当前记录的最新值。每个版本的undo日志还包含对应的事务id。MVCC(Multi-Version Concurrency Control)多版本并发控制:就是利用记录的版本链来控制并发事务访问相同记录时的行为。

2023-12-16 16:44:39 359 1

原创 MySQL学习(16)事务隔离级别

Rollback Segment Header页面是一个存放了各个UNDO页面链表的第一个页的页号的页面,这些页号称为undo slot。回滚段就是每一个Rollback Segment Header页面对应的段。每一个Rollback Segment Header页面都对应一个段,这个回滚段只有这一个页面。起始偏移量名称大小描述038B38B4B设置这个回滚段中管理的所有UNDO页面链表中的UNDO页面数量之和的最大值42B4BHistory链表占用的页面数量46B。

2023-12-16 16:43:28 396 1

原创 MySQL学习(15)undo日志

Rollback Segment Header页面是一个存放了各个UNDO页面链表的第一个页的页号的页面,这些页号称为undo slot。回滚段就是每一个Rollback Segment Header页面对应的段。每一个Rollback Segment Header页面都对应一个段,这个回滚段只有这一个页面。起始偏移量名称大小描述038B38B4B设置这个回滚段中管理的所有UNDO页面链表中的UNDO页面数量之和的最大值42B4BHistory链表占用的页面数量46B。

2023-12-15 13:43:47 889

原创 MySQL学习(14)redo日志

InnoDB存储引擎以页为单位从磁盘中加载到内存中,进行数据的管理。我们进行增删改查操作本质上是访问页面,其中包括读页面、写页面、创建新页面等操作。在访问页面之前,需要将页从磁盘中加载到Buffer Pool中才可以访问。在Buffer Pool中修改了数据后,会加入到flush链表中,但是flush链表并不能及时刷新到次盘。如果这个时候系统发生崩溃,内存中的数据丢失,未来的及从flush链表中刷新到磁盘的页也就没了。

2023-11-09 18:39:38 208 1

原创 MySQL学习(13)内存中的数据——Buffer Pool

Buffer Pool就是MySQL服务器启动时向操作系统申请的一片连续的内存。默认情况下,Buffer Pool的容量为128MB。可以通过启动项innodb_buffer_pool_size设置(单位为字节),不能设置小于5MB。

2023-11-08 15:18:13 91 1

原创 MySQL学习(11)使用EXPLAN查看执行计划

MySQL查询优化起生成的执行计划是什么,可以通过EXPLAIN命令查看。

2023-11-06 20:44:13 544

原创 MySQL学习(10)基于规则的优化

在一个查询语句中的某个位置存在另一个查询,这个出现在某个位置的查询就称为子查询,包含子查询的这个查询叫外层查询。子查询可以在外层查询的任意位置出现,必须使用小括号括起来。出现在SELECT子句SELECT子句汇总的子查询必须是标量子查询,不可以出现多列或多行结果。子查询结果为多行时执行结果为“Subquery returns more than 1 row”,子查询结果为多列时执行结果为“Operand should contain 1 column(s)”。

2023-10-31 11:43:58 95 1

原创 MySQL学习(9)统计数据

MySQL提供了两种存储统计数据的方式,分别是永久性地存储统计数据和非永久性地存储统计数据,分别存储在磁盘和内存中。系统变量innodb_stats_persistent用来控制统计数据存储在哪里。值为OFF表示存储在内存,值为ON表示存储在磁盘。

2023-10-31 11:42:36 32 1

原创 MySQL学习(8)基于成本的优化

查询驱动表后得到的记录条数称为驱动表的扇出单词查询驱动表的成本多次查询被驱动表的成本(次数与驱动表的扇出决定)显然, 驱动表的扇出越少,连查查询的成本越低。驱动表的扇出越多,成本成倍增加。当驱动表使用全表查询时,扇出值就是驱动表中的记录数量,查询优化器根据表统计数据得到表的记录数量,并作为扇出值。当驱动表使用二级索引查询的[计算方法](#index fanout),可以得出扫描区间内的记录数量,这个就是扇出值。当驱动表无法使用索引时,只能姑且认为扇出值是全表记录数量。

2023-10-31 11:41:16 49 1

原创 MySQL学习(7)连接的原理

连接就是把各个表中的记录都取出来进行依次匹配。若无过滤条件,连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,这样的结果集称为笛卡尔积。

2023-10-31 11:39:30 25 1

原创 MySQL学习(6)单表访问方法

MySQL执行查询语句的方式称为访问方法(access method)。

2023-10-31 11:37:41 27 1

原创 MySQL学习(5)记录存在那里——表空间

表空间中连续的64个页就是一个区,也就是一个区默认占用1MB空间。无论是系统表空间还是独立表空间,都可以看成是若干个连续的区组成,每256个区为一组。如下extent0-extent255位一组,extent256-extent511位一组,以此类推。FSP_HDR:用于记录表空间的一些属性以及本组所有区的XDES Entry数据结构,也就是有256个。IBUF_BITMAP:存储Change Buffer的一些信息。INODE:存储了若干INODE Entry数据结构。

2023-10-13 23:35:33 57

原创 MySQL学习(4)好好使用B+树索引

每个索引都是一颗B+树,对于聚簇索引,每一条完整记录都存储在B+树都叶子节点上;对于其他索引,叶子节点存储了索引列和主键。这么做都是为了提升查询速度,那么在实际使用中,是不是应该给所有列都添加索引呢,索引该如何使用呢?

2023-10-08 12:42:15 37 1

原创 MySQL学习(3)B+树索引是如何快速查询的

前面提到,COMPACT行格式的记录头信息中有一项属性record_type表示记录的类型,其中0表示普通记录,2表示Infimum记录,3表示Supremum记录,重要的是1表示B+树非叶子节点的目录项记录。记录放在页里简易图如下所示:一个页中的用户记录都按照大小依次串连成单链表,下一个索引页中的最小用户记录的主键值必须大于上一个页中最大用户记录的主键值给所有的页建立目录项。

2023-10-04 17:20:29 240

原创 MySQL学习(2)什么是InnoDB数据页

​ 页是InnoDB中磁盘和内存交互的基本单位,也是InnoDB管理存储空间的基本单位,默认大小为16KB。- COMPACTREDUNDANTDYNAMIC​ 与COMPACT类似,区别在于溢出列的处理方式有不同。DYNAMIC则是把所有数据都存储在溢出页中,在记录中只存储20个字节用来表示溢出页地址和数据占用字节数。COMPRESSED​ 与DYNAMIC相同,不同的是COMPRESSED采用压缩算法对页面进行压缩。

2023-10-01 19:55:23 62

原创 MySQL学习(1)MySQL程序有什么

​ MySQL实例是在计算机中运行的MySQL软件的单独副本。例如电脑中登陆1个QQ号,就是一个实例,登陆多个QQ号,则对应不同的实例。​ 人为的规定字符与二进制数据的映射关系的集合范围和编码规则就是字符集。将字符集映射成二进制数据的过程叫做编码,将二进制数据映射到字符的过程叫做解码。​ 在确定了字符集表示的字符范围及编码规则后,用来比较两个字符大小的规则称为比较规则。MySQL客户端通过发送请求给服务器,服务器收到请求后进行处理,并把处理结果返回给客户端。

2023-09-29 17:04:16 100 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除