![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 74
刘翼荣
不积跬步无以至千里,不积小流无以成江海
展开
-
sql优化
文章目录sql优化概念锁MVCC事务建表查询sql优化概念锁数据库解决并发场景的锁: 共享锁(读锁),排他锁(写锁)乐观锁:适用于数据竞争不激烈的场景,读多写少,通过版本号和时间戳实现悲观锁:每次操作都会锁定数据。适用于并发量大的场景表锁:锁定整张表,开销小,但是有严重的锁竞争行锁:开销大,但是可以支持高并发MVCC在InnoDB中,会在每行数据后添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期或者被删除。在可重复读 (repeat原创 2021-03-31 21:38:44 · 63 阅读 · 0 评论 -
MySQL行锁和表锁
文章目录MySQL行锁和表锁表锁行锁注意事项间隙锁总结MySQL行锁和表锁MySQL常用引擎有MyISAM和InnoDB,而InnoDB是mysql默认的引擎。MyISAM不支持行锁,而InnoDB支持行锁和表锁。MyISAM在执行select时,会自动给所有涉及的表加读锁,在执行update、delete、insert前,会给所有涉及的表加写锁,无需用户操作。读锁:select math from zje where math>60 lock in share mode;写锁:s原创 2021-03-22 21:34:19 · 163 阅读 · 0 评论 -
可重复读(Repeatable read)能防住幻读吗?
文章目录可重复读(Repeatable read)能防住幻读吗?事务隔离级别事务的并发问题概念幻读和不可重复读的区别乐观锁与悲观锁悲观锁乐观锁数据版本MVCC当前读Next-Key锁可重复读(Repeatable read)能防住幻读吗?事务隔离级别事务隔离级别脏读不可重复读幻读读未提交(read-uncommitted)√√√读已提交(read-committed)×√√可重复读 (repeatable-read)××√串行化 (seria原创 2021-03-21 19:42:23 · 2223 阅读 · 0 评论 -
索引
文章目录索引索引相关语句创建索引查看索引删除索引key_len的计算适用原则explain分析查询语句select_typetypekeypossible_keysrefrows数值类型代替字符串考虑使用ENUM类型索引索引相关语句创建索引CREATE INDEXCREATE INDEX indexName ON tableName (columnName(length));ALTERALTER TABLE tableName ADD INDEX indexName(columnNa原创 2021-03-20 09:23:07 · 165 阅读 · 1 评论 -
MySQL二三事
文章目录MySQLMyISAM与innodbMyISAMInnoDb适用场景MySQL的索引类型int与char的隐式转换MySQLMyISAM与innodbMyISAM不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb支持ACID的事务,支持事务的四种隔离级别;支原创 2021-03-19 20:04:21 · 77 阅读 · 0 评论 -
联合索引生效和失效的条件
文章目录**联合索引生效和失效的条件**生效条件失效条件联合索引生效和失效的条件生效条件两个或者多个列上的索引叫做复合或联合索引。mysql中从左到右使用索引的字段,一个查询可以只使用索引中的一部分,但只能是最左侧。创建符合索引时,应该仔细考虑列的顺序。对索引中所有列或仅对前几列执行搜索时,复合索引将会非常有用,仅对后面的任意列执行搜索时,复合索引没有任何用处。失效条件减少或者避免 select *在使用<> 或 !=时会导致索引失并且进行全盘扫描like以通配符开头 ‘%原创 2021-03-09 21:02:00 · 954 阅读 · 1 评论 -
MySQL面试题
文章目录MySQL面试题MySQL查询字段区不区分大小写?解决方案一解决方案二MySQL binlog的几种日志录入格式以及区别StatementRowMixedlevelMySQL innodb的事务与日志的实现方式日志种类事务的并发问题概念幻读和不可重复读的区别事务隔离级别事务是如何通过日志来实现MySQL面试题MySQL查询字段区不区分大小写?不区分解决方案一MySQL默认的字符检索策略:utf8_general_ci,表示不区分大小写。可以使用utf8_general_cs,表示区分大小写原创 2021-03-06 13:43:24 · 102 阅读 · 0 评论 -
分库分表后如何处理id主键
文章目录分库分表后如何处理id主键数据库自增 id介绍适用场景UUID数据库 sequence 或者表自增字段步长系统时间戳snowflake 算法分库分表后如何处理id主键数据库自增 id介绍每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。优点:简单方便缺点:无法应对高并发场景,单个数据库适用场景单库并发低单库数据量小并发低,数据量大UUID优点:本地生成,无需经过原创 2021-02-20 19:57:38 · 247 阅读 · 0 评论