
数据库相关
文章平均质量分 91
icankeep
优雅程序猿
展开
-
乐观锁和悲观锁的区别(最全面的分析)
悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过...转载 2018-12-19 12:34:49 · 11920 阅读 · 2 评论 -
MyISAM和InnoDB引擎的区别与应用场景
1. 区别:(1)事务处理:MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理);(2)锁机制不同:MyISAM是表级锁,而InnoDB是行级锁;(3)select ,update ,insert ,delete 操作:MyISAM:如果执行大量的SELECT,MyISAM是更好的选择InnoDB:如果你的数据执行大量的INSERT或UP...原创 2018-12-19 12:47:17 · 292 阅读 · 0 评论 -
事务的四个特征和MySQL的四种隔离级别
来源:https://www.jb51.net/article/96179.htm一、首先什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前...原创 2018-12-19 13:02:05 · 252 阅读 · 0 评论 -
主键和唯一索引区别
1.主键为一种约束,唯一索引为一种索引,本质上就不同;2.主键创建后一定包含唯一性索引,而唯一索引不一定就是主键;3.主键不允许空值,唯一索引可以为空;4.主键可以被其他表引用,而唯一索引不可以;5.一个表最多只能创建一个主键,而可以创建多个唯一索引;6.主键和索引都是键,主键是逻辑键,索引为物理键,即主键不实际存在。...原创 2019-03-06 15:06:02 · 2296 阅读 · 1 评论 -
MySQL存储引擎
MySQL5.0支持的存储引擎包括:MyISAM,InnoDB,BDB,MEMORY,Merge,EXAMPLE,BLACKHOLE…查看当前存储引擎:show variable like 'table_type';查询当前数据库支持的存储引擎:show engines;show variables like 'have%';修改表引擎:alter table table_na...原创 2019-03-14 09:42:14 · 191 阅读 · 0 评论 -
MySQL中索引
索引的存储分类B-Tree索引:最常见的索引类型,大部分引擎都支持B树索引,底层数据结构使用B+树Hash索引:Memory、Heap引擎支持,使用场景简单。R-Tree索引(空间索引):空间索引是MyISAM的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少。Full-Text(全文索引):全文索引也是MyISAM的一个特殊索引类型,支持char、varchar、text列,I...原创 2019-03-14 10:11:45 · 235 阅读 · 0 评论 -
MySQL中锁机制
锁类型表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般MyISAM和MEMORY采用的是表级锁,BDB采用页面锁,InnoDB既支持行级锁,也支持表级锁,默认使用行级锁。表共享...原创 2019-03-14 11:26:25 · 251 阅读 · 0 评论 -
使索引失效的几种情况
使索引失效的几种情况:(1)条件中有or,即使有条件带索引也不会使用;要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引(2)对于多列索引,如果不是使用的第一部分,则不会使用索引;(3)like查询是以%开头的,不会用到索引;(4)如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引;(5)如果mysql估计使用全表扫描要比使用索引快,则不使...原创 2019-03-10 18:22:52 · 1165 阅读 · 0 评论 -
Truncate table 和 DELETE
truncate table与delete都是删除表数据,保留表结构truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行。不同:truncate 比 delete(一行一行的删)速度快,且使用的系统和事务日志资源少。truncate 操作后的表比Delete操作后的表要快得多。如果有ROLLBACK命令Delete将被撤销,...原创 2019-03-08 10:20:01 · 2290 阅读 · 0 评论