![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MYSQL
文章平均质量分 66
Peng__java
自学Java记录
展开
-
MYSQL中收缩表空间的方法
删除整个表 参数 innodb_file_per_table 表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数innodb_file_per_table控制的: 这个参数设置为OFF表示表的数据放在系统共享表空间,也就是跟数据字典放在一起; 这个参数设置为ON表示的是,每个InnoDB表数据存储在一个以 .ibd为后缀的文件中。 一个表单独存储为一个文件更容易管理,而且在你不需要这个表的时候,通过drop table命令,系统就会直接删除这个文件。而如果是放在共享表空间中,即使表.原创 2022-04-06 09:49:56 · 1687 阅读 · 0 评论 -
MYSQL索引
索引的常见模型 哈希表:因其无序性,哈希索引做区间查询的速度很慢。因此哈希表适用于只有等值查询的场景(e.g. Memcached及其他一些NoSQL引擎) 有序数组:在等值查询和范围查询场景中的性能就都非常优秀,缺点:有序数组索引只适用于静态存储引擎,更新数据的成本太高(因为需要挪动插入/删除记录之后的所有数据) 搜索树:二叉搜索树索引为了维持O(log(N))的查询复杂度,需要保持这棵树是平衡二叉树。为了做这个保证,更新的时间复杂度也是O(log(N))。 注:实际上大多数数据库存储不使用二叉树原创 2022-04-01 11:00:32 · 1131 阅读 · 0 评论 -
MYSQL 事务隔离性
事务就是要保证一组数据库操作,要么全部成功,要么全部失败。 事务隔离级别:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(serializable ) MVCC:多版本并发控制 事务隔离的实现:通过回滚实现 每条记录更新的时候都会同时记录一条回滚操作。记录上的最新值通过回滚操作可以得到前一个状态的值。 ...原创 2022-03-30 20:18:22 · 569 阅读 · 0 评论 -
SQL更新语句的执行流程
连接器-->分析器-->优化器-->执行器 更新流程还涉及两个重要的日志模块:redo log(重做日志)、binlog(归档日志) redo log(InnoDB 特有的日志) WAL技术:Write-Ahead Logging,先写日志,再写磁盘。即:当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里更新内存,这个时候更新就算完成了。InnoDB引擎会在适当的时候(e.g.系统比较空闲的时候),将这个操作记录更新到磁盘里面(刷脏页)。 优点:保证即使原创 2022-03-30 16:13:07 · 900 阅读 · 0 评论