
关系型数据库
文章平均质量分 89
关系型数据库
coder_sheep
这个作者很懒,什么都没留下…
展开
-
MYSQL查询性能优化及案例(一)
在实际工作中总是去强调在数据库层去完成可能多的工作,譬如使用存储过程、函数、复杂的查询等等,这样的逻辑是在网络通信,查询解析优化是一件代价很高的基础上,但是现在网络速度比以前快很多。删除数据就是很好的例子,如果一个大的语句一次完成的话就会锁住多行数据,阻塞很多小的重要的查询。目的是找到更有的实际需要的结果为不是需要从MYSQL获取一摸一样的结果集,有时候是转换一种查询方法,有时候是修改应用代码。这个查询使用ref类型访问数据的方式,访问的行数和返回的行数时1:1,当删除这个索引时再来运行查询。原创 2024-01-19 16:32:09 · 941 阅读 · 0 评论 -
MYSQL高性能索引
正确的选择和创建索引是实现高性能查询的基础,以下是高效使用索引的方法。原创 2024-01-16 23:25:11 · 1426 阅读 · 0 评论 -
MYSQL的锁
因此,在更新的时候,当前读拿到的数据是 (1,2),更新后生成了新版本的数据 (1,3),这个新版本的 row trx_id 是 101。所以,在执行事务 B 查询语句的时候,一看自己的版本号是 101,最新数据的版本号也是 101,是自己的更新,可以直接使用,所以查询得到的 k 的值是 3。但是Innodb引擎的行锁,事务更新一行,如果刚好其他事务持有这一行的行锁,这个事务不能更新这行数据,会被锁住,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?是按申请顺序严格递增的。原创 2024-01-15 23:42:33 · 1167 阅读 · 1 评论 -
MYSQL的索引(一)
数可以有二叉也可有多叉,二叉树的查询效率最高,实际上数据库存储不用二叉树,原因在于索引不仅存在内存也在磁盘上,寻址需要时间,层数高意味着磁盘数据块多,查询随机读取数据块耗时多。而更糟的情况是,如果 R5 所在的数据页已经满了,根据 B+ 树的算法,这时候需要申请一个新的数据页,然后挪动部分数据过去。二叉搜索树的特点是:父节点左子树所有结点的值小于父节点的值,右子树所有结点的值大于父节点的值,这个时间复杂度是 O(log(N))。,比如你要保存的是 2017 年某个城市的所有人口信息,这类不会再修改的数据。原创 2024-01-12 15:29:16 · 1178 阅读 · 1 评论 -
MYSQL的事务隔离
当数据库有多个事务同时执行时,就会出现脏读,不可重复读,幻读的问题,为了解决这些问题,隔离级别应运而生。在视图 1、2、3、4里面,这一个记录的值分别是 A、B、C、D,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。的结果为准,在可重复读级别下,视图是在事务启动时创建,且整个事务只有一个视图,在已提交读隔离级别下,每个sql执行时都会创建这个视图。这里以可重复读为例,mysql每次更新都会记录一个回滚操作,记录上的最新值,通过回滚操作获取上一个状态值。为什么不建议长事务?原创 2024-01-12 13:49:32 · 945 阅读 · 2 评论 -
MYSQL的日志系统
mysql的更新过程涉及到两个重要的日志模块redo log和binlog。原创 2024-01-10 17:57:27 · 546 阅读 · 1 评论