
mysql
编程艺术artist
这个作者很懒,什么都没留下…
展开
-
MyIsAM和InnoDB的区别
InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩 MyISAM: 不支持事务,回滚将造成不完全原创 2017-08-16 20:09:58 · 150 阅读 · 0 评论 -
B-Tree索引及索引优化策略
B-Tree索引: 1常用的索引,通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。 2加快数据的查询速度,因为不必在进行全表扫描,取而代之的是从索引的根节点进行扫描,根节点存放了指向子节点的指针,根据这些指针到下层去查找,通过比较节点页的值和要查找的数据的值,可以找到合适的指针进入下层子节点,要么找到,要么不存在; 3叶子结点比较特别,它们的指针指向的是要查找的数原创 2017-08-16 21:25:42 · 454 阅读 · 0 评论 -
脏读,不可重复读,幻读
锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 一般来说,锁可以防止脏读、不可重复读和幻觉读。 事务并发产生的问题: 脏读:一个事务读取到了另外一个事务没有提交的数据 事务1:更新一条数据转载 2017-07-26 17:08:34 · 154 阅读 · 0 评论 -
事务和锁(共享锁,排他锁,乐观,悲观,死锁)
并发控制: 事务和锁的存在都是为了更好的解决并发访问造成的数据不一致性的的问题 乐观锁和悲观锁都是为了解决并发控制问题, 乐观锁可以认为是一种在最后提交的时候检测冲突的手段,而悲观锁则是一种避免冲突的手段。 乐观锁: 是应用系统层面和数据的业务逻辑层次上的(实际上并没有加锁,只不过大家一直这样叫而已),利用程序处理并发, 它假定当某一个用户去读取某一个数据的时候,其他的用户不会来访问修改这个转载 2017-07-26 17:46:41 · 1228 阅读 · 0 评论 -
数据库(第一范式,第二范式,第三范式)
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF)转载 2017-08-18 19:47:58 · 175 阅读 · 0 评论 -
行锁,表锁,页级锁
页级:引擎 BDB。 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许 行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。 页级,表级锁速度快,但冲突多,行级冲突少,但速度慢转载 2017-08-18 21:52:50 · 187 阅读 · 0 评论 -
聚簇索引与非聚簇索引的区别
聚簇索引与非聚簇索引的区别 通常情况下,建立索引是加快查询速度的有效手段。但索引不是万能的,靠索引并不能实现对所有 数据的快速存取。事实上,如果索引策略和数据检索需求严重不符的话,建立索引反而会降低查询性能 。因此在实际使用当中,应该充分考虑到索引的开销,包括磁盘空间的开销及处理开销(如资源竞争和 加锁)。例如,如果数据频繁的更新或删加,就不宜建立索转载 2017-08-14 18:16:39 · 233 阅读 · 0 评论 -
事务的四大隔离级别
1未提交读 事务中的修改,即使没有提交,对其他事务都是可见的,事务读取未提交的数据,称为脏读,会导致很多问题,很少使用; 2提交读 事务中的修改,只有在提交后对于其他事务才是可见的,也称为不可重复读,因为两次读取的内容可能不一样; 3可重复读(mysql的默认事务隔离级别) 解决了脏读的问题,同一个事务中多次读取同样的记录结果是一样的,但理论上无法解决幻读的问题,幻读是指某个事务在读取某原创 2017-08-14 21:13:15 · 235 阅读 · 0 评论