Mysql
文章平均质量分 83
qq_27502511
这个作者很懒,什么都没留下…
展开
-
MySQL锁
MySQL自身在对插入或者修改的数据(没有显示的添加s、x锁)时进行加锁,防止其他事务进行脏读等。实现方式:判断当前记录的trx_id的值是否处于活跃事务阶段。一个事务在插入一条记录时需要判断插入位置是否已被背的事务加了gap锁。在gap锁的范围基础上添加了该条数据的范围。原创 2023-06-07 18:12:57 · 531 阅读 · 0 评论 -
MySQL事务隔离级别和MVCC
MVCC是MySQL中用于实现可重复读隔离级别的并发控制机制。它通过在数据行中维护多个版本来实现并发读取和写入的一致性。Read View(读视图)是用于实现多版本并发控制(MVCC)机制的重要概念之一。Read View是事务在特定时间点看到的数据库的一致性视图。根据聚簇索引记录中的两个必要列(row_id,主键或者是非NULL的唯一索引)在合适的时候把update undo日志以及仅仅被标记删除的记录彻底删除。原创 2023-06-05 18:06:32 · 638 阅读 · 0 评论 -
MySQL redo log、undo log、binlog
MySQL是一个广泛使用的关系型数据库管理系统,它通过一系列的日志来保证数据的一致性和持久性。在MySQL中,有三个重要的日志组件,它们分别是redo log(重做日志)、undo log(回滚日志)和binlog(二进制日志)。在下面的博客内容中,我将介绍这三个组件的实现原理。原创 2023-06-05 17:46:44 · 682 阅读 · 0 评论 -
MySQL 事务简介
狗哥和猫爷是⼀对好基友,他们都到银⾏开⼀个账户,他们在现实世界中拥有的资产就会体现在数据库世界的account表中。+ ----+--------+---------+ | id | name | balance | + ----+--------+---------+ | 1 | 狗哥 | 11 | | 2 | 猫爷 | 2 | + ----+--------+---------+⽐⽅说有⼀次猫爷在赌场赌博输了钱,急忙打电话给狗哥要借10块钱,不然那些看场⼦的就会把⾃⼰剁了。原创 2023-05-31 23:43:56 · 482 阅读 · 0 评论 -
Mysql InnoDB的Buffer Pool
上述的这个间隔时间是由系统变量。每当需要从磁盘中加载⼀个⻚到Buffer Pool中时,就从free链表中取⼀个空闲的缓存⻚,并且把该缓存⻚对应的控制块的信息填上(就是该⻚所在的表空间、⻚号之类的信息),然后把该缓存⻚对应的free链表节点从链表中移除,表示该缓存⻚已经被使⽤了。,在需要访问某个⻚的数据时,先从哈希表中根据表空间号 + ⻚号看看有没有对应的缓存⻚,如果有,直接使⽤该缓存⻚就好,如果没有,那就从free链表中选⼀个空闲的缓存⻚,然后把磁盘中对应的⻚加载到该缓存⻚的位置。原创 2023-05-31 23:00:44 · 832 阅读 · 0 评论 -
MySQL 优化器⽣成执⾏计划的整个过程(optimizer trace)
以看到该查询可能使⽤到的索引有3个,那么为什么优化器最终选择了idx_key2⽽不选择其他的索引或者直接全表扫描呢?在MySQL 5.6以及之后的版本中才会有optimizer_trace。原创 2023-05-31 17:32:13 · 740 阅读 · 0 评论 -
MySQL 执行计划处理(Explain)
⼀条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后⽣成⼀个所谓的执⾏计划。原创 2023-05-31 17:24:34 · 592 阅读 · 0 评论 -
MySQL基于规则的SQL优化
、等操作符和某个操作数组成⼀个布尔表达式,这样的⼦查询必须是标量⼦查询或者⾏⼦查询。如果查询语句中没有出现诸如SUM、MAX等等的聚集函数以及GROUP BY⼦句,优化器就把HAVING⼦句和WHERE⼦句合并起来。然后在将上⼀步⼦查询得到的结果当作外层查询的参数再执⾏外层查询SELECT * FROM s1 WHERE key1 = …不直接将不相关⼦查询的结果集当作外层查询的参数,⽽是将该结果集写⼊⼀个临时表⾥。SELECT⼦句中,我们前边说过的在查询列表中的⼦查询必须是标量⼦查询。原创 2023-05-30 22:38:16 · 560 阅读 · 0 评论 -
Join的连接原理
连接就是把各个表中的记录都取出来进行一次匹配,并把匹配后的组合发送给客户端。如果连接查询中的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,那么这样的结果集就可以称为笛卡尔积。t1、t2表数据t1.m1 >1;步骤1:假设使用t1作为驱动表,那么就需要到t1表中查找满足t1.m1 >1的记录。步骤2:步骤1中从驱动表每获取到一条记录,都需要到t2表中查找匹配的记录。原创 2023-05-28 21:33:08 · 1202 阅读 · 0 评论 -
MySQL成本优化
I/O成本:把数据从磁盘加载到内存中,读取一个页面话费的成本默认是1.0。CPU成本:读取记录以及检测记录是否满足对应的搜索条件、对结果集进行排序等。读取或者检测一条记录是否符合搜索条件的成默认是0.2。原创 2023-05-29 16:02:24 · 689 阅读 · 0 评论 -
单表访问方法
单表访问方法原创 2023-04-25 23:34:08 · 487 阅读 · 0 评论 -
B+树索引的使用
B+ 树索引原创 2023-04-13 17:27:07 · 427 阅读 · 0 评论 -
InnoDB数据页结构
表示当前记录拥有的记录数,页中的数据其实还会分为多个组,每个组会有一个最大的记录,最大记录的 n_owned 就记录了这个组中的记录数。页是InnoDB管理存储的基本单位,一个页的大小一般是16KB。页头部存的是一个数据页的概要信息,是一个页专有的,而文件头存的是各种页通用的信息,比如页的类型是什么、页的编号是多少、上一页的页号是多少、下一页的页号是多少等等。表示从当前记录的真实数据到下一条记录的真实数据的地址偏移量,如果没有下一条记录就是 0,当为负数时,说明当前记录的下一条记录在当前记录的前面。原创 2023-03-20 00:23:44 · 105 阅读 · 0 评论 -
InnoDB记录存储结构
InnoDB记录存储结构原创 2023-03-09 23:48:28 · 236 阅读 · 0 评论 -
2.MySQL配置
MySQL在安装、启动、运行过程中,可以适度的修改、查看各项配置原创 2023-02-15 17:28:32 · 129 阅读 · 0 评论 -
MySQL 存储引擎
2.仅在使用压缩行格式时才支持压缩 MyISAMtable。在 MyISAM 中使用压缩行格式的 table 是只读的。1PB(拍字节)=1024TB。1TB(太字节)=1024GB。6.MySQL 5.6 和更高版本提供了对 FULLTEXT 索引的 InnoDB 支持。4.在 MySQL 5.7 和更高版本中,支持静态数据 table 空间加密。5.MySQL Cluster NDB 7.3 和更高版本提供了对外键的支持。7.MySQL 5.7 和更高版本提供了 InnoDB 对地理空间索引的支持。原创 2023-02-13 16:06:58 · 85 阅读 · 0 评论 -
mysql 技巧 * 判断查询缓存是否命中
参考:https://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/MySQL 服务收到到查询请求时,会先在内存中找是否有完全一致的查询语句数据,有直接返回,无才经过一系列步骤查询数据,注意是语句完全一致才能被查询缓存命中。所以查询缓存适合有大量相同查询的应用,不适合有大量数据更新的应用。可见 Qcache_hits(缓存命中数): 1,Qcache_inserts(插入缓存数):0,查询缓存被命中。原创 2023-02-10 16:58:00 · 644 阅读 · 0 评论 -
bat 脚本处理Mysql安装初始化sql脚本
需要使用admin权限,权限脚本命令已注释@echo offrem admin权限rem cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nulrem if %errorlevel%==0 goto Adminrem if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"rem echo Set RequestUAC = CreateObject原创 2020-12-07 17:24:03 · 518 阅读 · 0 评论 -
Mysql知识点
Mysql知识点数据库设计范式存储引擎Sql分析常见普通的Join查询sql执行顺序手写机读总结索引优势与劣势建立条件索引类型性能分析mysql常见瓶颈Explain索引优化慢sql分析order by优化group by优化慢查询日志分析批量插入数据脚本数据库设计范式第一范式1NF是对属性的原子性,要求属性具有原子性,不可再分解;第二范式2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;第三范式3NF是对字段的冗余性,要求任何字段不能由其他字原创 2020-10-16 00:47:52 · 143 阅读 · 0 评论 -
1055-mysql Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nona
‘sql_mode’ can’t be set to the value of ‘NO_AUTO_CREATE_USER’解决方案:亲测有效第一步,第二步:参考以上链接第三步,mysql配置文件 mysqld 添加sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION重启mysql...原创 2020-09-19 09:43:10 · 341 阅读 · 0 评论