摘要:inndb 刷脏页1 内存中数据页和磁盘中数据页内容不一致的时候,内存中的数据页称之为脏页,当内存中数据页 内容和磁盘数据页内容一致的时候,称之为 干净页。2 innodb 使用缓冲池管理内存页,当内存空间不够的时候,就会把部分脏页数据同步到磁盘,称之为刷脏页。3 刷脏页的速度和磁盘的硬件有关, i
阅读全文
摘要:1 直接创建索引,这样比较占用空间;2 创建前缀索引,节省空间,但会增加查询扫描,并且不能使用覆盖索引;3 倒叙存储,再创建前缀索引,用于绕过字符串本身前缀区分度不够的问题;4 创建hash字段索引,查询新能稳定,有额外的存储和计算消耗,不支持范围扫描。
阅读全文
摘要:mysql 索引异常: 1 通常的异常情况为,使用错索引,导致慢查询。2 为什么会使用错索引呢? 因为在执行 sql 之前,优化器会 分析语句,选择不同的索引 导致不同的 扫描行数, 排序等操作,因此存在选错索引的情 况。 优化器会判断使用这个索引需要扫描多少行的数据。3 不同的索引会有不同的基数:
阅读全文
摘要:innoDb 一 普通索引和唯一索引的查询过程: select id from T where k=5。 1 根据b+树,普通索引在查询到第一条记录之后,会继续查询下一条记录,只到碰到第一个 k=5 的记录。 2 唯一索引,会直接返回 查询到的第一条k= 5的记录。 虽然普通索引多 一次查询,但是对
阅读全文
摘要:事务的提交过程 以及数据的查询方式1 事务在 start transaction with consistent snapshot 的时候,创建事务的快照。 1.1 事务的快照,是基于整个库的。2 数据库中的数据是有多个版本的,每次更新的时候,都会生成行的一下 事务的id和行数据,老的 事务id和行
阅读全文
摘要:1 mysql 根据锁的范围分为 全局锁,表级锁,和行级锁。 2 全局锁 2.1 全局锁会让整个表变成只读的状态。一般用在 数据的逻辑备份。 2.2 mysql 可是使用 Flash table with read lock (FTWRL) 给全局添加读锁。 2.3 mysql官方自带的逻辑备份工具
阅读全文
摘要:二级索引回到主键索引树搜索的过程,我们称为回表。索引的优化: 1 覆盖索引: 比如主键索引是ID 二级索引 k 是age, select age from T where id = 3 因为二级索引子叶子里面就是主键索引,所以查询数据之后, 可以不用回表,直接去从二级索引里面拿到 age 数据。 2
阅读全文
摘要:1 数据库的索引是为了提高数据的查询效率。2 索引常用的数据结构有, 2.1 hash表: 增加新的数据,查询依然很快,缺点是 查询范围数据慢。 适合做等值查询。 2.2 有序数组和长链表:适合做范围查询和等值查询, 只适用于静态数据引擎,缺点是当往数据中间插入记录的时候,需要挪动后面所有的记录。
阅读全文
摘要:redo log当数据库更新一条记录的时候,innoDB 引擎,会先把记录写道redo log 中,并更新内存,这个时候更新就算完成了。当系统比较空闲的时候,再读取redo log 中的记录把更新信息记录到磁盘中。 因此数据库就具备了 crash-safe 能力。 binlogmysql 分为两块:
阅读全文
摘要:1 事务就是一组数据库操作,要不全部都成功,要不全部都失败。2 事务包含ACID (Atomicity Consistency Isolation Durability)。3 数据库上有多个事务同时执行的时候,就有可能造成 脏读(dity Read)不可重复读(no-repeatable read)
阅读全文
摘要:SELECT corp_name,count(*) as sums FROM corp_tax WHERE corp_year = 2018 AND corp_month = 8 group by corp_name HAVING sums >1
阅读全文
摘要:在xml中,动态传参去数据库查询,下面是in的示例。 比如有条sql 这条sql,如果要动态传参,xml的代码如下 mapper的接口为: 上面mapper中的参数要用@param绑定,要不然传入多个参数会报错。
阅读全文