
mysql
文章平均质量分 50
向程序猿进化
这个作者很懒,什么都没留下…
展开
-
MyISAM和InnoDB存储引擎的特点
Mysql区别于其他数据库的一个重要特点是其插件式的表存储引擎,注意,存储引擎是基于表的,而不是基于数据库。MyISAM特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,...原创 2018-08-07 15:10:16 · 2443 阅读 · 0 评论 -
锁的类型
锁对象用于管理对共享资源的并发访问Innodb存储引擎实现了如下2种标准的行级锁:共享锁(S lock),允许事务读取一行数据。排它锁(X lock),允许事务删除或者更新一行数据。当一个事务获取了行r的共享锁,那么另外一个事务也可以立即获取行r的共享锁,因为读取并未改变行r的数据,这种情况就是锁兼容。但是如果有事务想获得行r的排它锁,则它必须等待事务释放行r上的共享锁—这种情况就是锁...原创 2018-08-07 16:41:36 · 1015 阅读 · 0 评论 -
悲观锁和乐观锁
数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。我们都知道锁的种类一般分为乐观锁和悲观锁两种,InnoDB 存储引擎中使用的就是悲观锁,而按照锁的粒度划分,也可以分成行锁和表锁。Innodb支持行锁,MyIsam只支持表锁乐观锁乐观锁和悲观锁其实都是并发控制的机制,同时它们在原理上就有着本质的差别;乐观锁是一种思想,它其实并不是一种真正的『锁』,它会先尝...原创 2018-08-07 15:40:03 · 204 阅读 · 0 评论 -
前缀索引和覆盖索引
前缀索引当索引的字符串列很大时,创建的索引也就变得很大,为了减小索引体积,提高索引的扫描速度,就用索引的前部分字串索引,这样索引占用的空间就会大大减少,并且索引的选择性也不会降低很多。而且是对BLOB和TEXT列进行索引,或者非常长的VARCHAR列,就必须使用前缀索引,因为MySQL不允许索引它们的全部长度。使用:列的前缀的长度选择很重要,又要节约索引空间,又要保证前缀索引的选择性要和...原创 2018-08-07 15:38:08 · 1450 阅读 · 0 评论 -
联合索引(多列索引)
联合索引是指对表上的多个列进行索引,联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.最左匹配原则假定上图联合索引的为(a,b)。联合索引也是一棵B+树,不同的是B+树在对索引a排序的基础上,对索引b排序。所以数据按照(1,1),(1,2)......顺序排放。对于selete * from table where a=XX and b=XX,显然是可以使用...原创 2018-08-07 15:37:09 · 34702 阅读 · 5 评论 -
聚簇索引和非聚簇索引
参考博客:http://www.admin10000.com/document/5372.html聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体细节依赖于其实现方式。MySQL数据库中innodb存储引擎,B+树索引可以分为聚簇索引(也称聚集索引,clustered index)和辅助索引(有时也称非聚簇索引或二级索引,secondary index,non-clustere...原创 2018-08-07 15:34:30 · 15995 阅读 · 7 评论 -
B+树索引
参考博客:http://www.admin10000.com/document/5372.htmlB+树索引的构造类似于二叉树,根据键值快速找到数据,B+树中的B代表平衡(balance),B+树索引并不能找到一个给定键值的具体行,B+树索引只能找到被查找数据行所在的页,数据库把页读入到内存中,最后在内存中查找到相应的数据。B树和B+树详见:https://blog.youkuaiyun.com/...原创 2018-08-07 15:28:03 · 4589 阅读 · 0 评论 -
MySQL索引的类型
在《高性能MySQL》中按照数据结构的不同将索引分为B+树索引、哈希索引、全文索引。B+树索引就是传统意义上的索引使用索引的优点:第一,索引大大减少了服务器需要扫描的数据量,可以帮助服务器避免排序和临时表,索引可以将随机I/O变为顺序I/O第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四...原创 2018-08-07 15:17:21 · 151 阅读 · 0 评论 -
MySQL事务的四大特性
事务(transaction):是一组原子性的SQL查询,或者说是一个独立的工作单元。事务内的语句,要么就全部执行,要么就全都不执行。⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数据库从...原创 2018-08-07 15:14:53 · 2156 阅读 · 0 评论 -
数据库的三大范式和五大约束
第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)【如何更好的区分三大范式】...转载 2018-08-07 15:11:48 · 1046 阅读 · 0 评论 -
一致性非锁定读和一致性锁定读
一致性的非锁定读在默认配置下innodb的隔离级别是repeatable read,innodb的select操作使用的是一致性非锁定读一致性的非锁定行读(consistent nonlocking read,简称CNR)是指InnoDB存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中运行的数据。如果读取的行正在执行delete、update操作...原创 2019-03-02 18:49:03 · 2164 阅读 · 0 评论