当前位置: 首页 > wzjs >正文

通道县城市建设投资有限公司网站北京网站建设推荐q479185700上快

通道县城市建设投资有限公司网站,北京网站建设推荐q479185700上快,网站开发宣传图片,财务管理系统一、事务的四大特性? 1、原子性:是指事务包含的所有操作要么全部成功,要么全部失败回滚。 2、一致性:是指一个事务执行之前和执行之后都必须处于一致性状态。比如a与b账户共有100块,两人之间转账之后无论成功还是失败…

一、事务的四大特性?

1、原子性:是指事务包含的所有操作要么全部成功,要么全部失败回滚。
2、一致性:是指一个事务执行之前和执行之后都必须处于一致性状态。比如a与b账户共有100块,两人之间转账之后无论成功还是失败,它们的账户总和还是100。
3、隔离性:跟隔离级别相关,如orcel 默认read committed,一个事务只能读到已经提交的修改;mysql默认REPEATABLE READ,事务在执行过程中可以多次读取相同的数据,并且在事务结束之前,这些数据不会被其他事务修改。
4、持久性:是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

二、事务隔离级

脏读:是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
不可重复读:是指在对于数据库中的某行记录,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,另一个事务修改了数据并提交了。
幻读:是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行,就像产生幻觉一样,这就是发生了幻读。
不可重复读和脏读:区别是脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。

幻读和不可重复读:都是读取了另一条已经提交的事务,不同的是不可重复读的重点是修改幻读的重点在于新增或者删除

事务隔离就是为了解决上面提到的脏读、不可重复读、幻读这几个问题。

MySQL数据库为我们提供的四种隔离级别:

Serializable (串行化):通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。
Repeatable read (可重复读):MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行,解决了不可重复读的问题。
Read committed (读已提交):一个事务只能看见已经提交事务所做的改变。可避免脏读的发生。
Read uncommitted (读未提交):所有事务都可以看到其他未提交事务的执行结果。

三、索引

1. 索引是存储引擎用于提高数据库表的访问速度的一种数据结构

2. 优点:加快数据查找的速度,加快表与表之间的连接,排序或者是分组的字段添加索引可以加快分组和排序的速度

3. 缺点:索引需要占用物理空间、会降低表的增删改的效率,因为每次对表记录进行增删改,需要进行动态维护索引,导致增删改时间变长

什么情况下需要建索引
什么情况下不建索引

经常用于查询的字段。

经常用于连接的字段建立索引,可以加快连接的速度。

经常需要排序的字段建立索引,因为索引已经排好序,可以加快排序查询速度

where条件中用不到的字段不适合建立索引

表记录较少

需要经常增删改

参与列计算的列不适合建索引

区分度不高的字段不适合建立索引,如性别等

索引的数据结构

索引类型有B+树索引和哈希索引,InnoDB引擎的默认的索引类型为B+树索引。

HASH索引

B+树索引

哈希索引不支持排序,因为哈希表是无序的。

哈希索引不支持范围查找

哈希索引不支持模糊查询及多列索引的最左前缀匹配。

因为哈希表中会存在哈希冲突,所以哈希索引的性能是不稳定的

支持

性能是相对稳定的,每次查询都是从根节点到叶子节点。

B+树特性
B+树是B树的变种,有着比B树更高的查询效率。
1、B+树的特性
(1)有 k 个子树的中间节点包含有 k 个元素(B 树中是 k-1 个元素),每个元素不保存数据,只用来索引,所有数据
都保存在叶子节点。
(2)所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小
自小而大顺序链接。
(3)所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。2、总结
由于B+树的数据都存储在叶子结点中,叶子结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,而在数据库中基于范围的查询是非常频繁的,所以通常B+树用于数据库索引。B+树的节点只存储索引key值,具体信息的地址存在于叶子节点的地址中。这就使以页为单位的索引中可以存放更多的节点。高度低减少更多的I/O支出。B+树的查询效率更加稳定,任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
B+树与B树区别
B+树的使用场景
B+树是在B树的基础上进行改造的,他的数据都在叶子节点,同时叶子节点之间还加了指针形成链表。
B+树多用于数据库中的索引。那么为什么B+树用于数据库中的索引呢?
原因:
因为在数据库中select常常不只是查询一条记录,常常要查询多条记录。比如:按照id的排序的后10条。如果是多条的话,B树需要
做中序遍历,可能要跨层访问。而B+树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表
就能够把所有数据取出来了
索引分类

主键索引:名为primary的唯一非空索引,不允许有空值

InnoDB聚集索引(聚簇索引)一般是表中的主键索引,如果表中没有显示指定主键,则会选择表中的第一个不允许为NULL的唯一索引。如果没有主键也没有合适的唯一索引,那么InnoDB内部会生成一个隐藏的主键作为聚集索引,这个隐藏的主键长度为6个字节,它的值会随着数据的插入自增。

唯一索引:索引列中的值必须是唯一的,但是允许为空值。唯一索引和主键索引的区别是:唯一约束的列可以为null且可以存在多个null值。

组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时需遵循最左前缀原则。

全文索引:只有在MyISAM引擎上才能使用,只能在CHARVARCHARTEXT类型字段上使用全文索引。

覆盖索引

select的字段列只用从索引中就能够取得,不需要回表进行二次查询,也就是说查询列要被所使用的索引覆盖。对于innodb表的二级索引,如果索引能覆盖到查询的列,那么就可以避免对主键索引的二次查询。

不是所有类型的索引都可以成为覆盖索引。覆盖索引要存储索引列的值,而哈希索引、全文索引不存储索引列的值,所以MySQL使用b+树索引做覆盖索引。

索引的设计原则、索引失效

设计原则

索引列的区分度越高,索引的效果越好

尽量使用短索引,涉及到的磁盘I/O较少,查询速度更快。(长的字符列上创建索引-前缀索引

// 列创建前缀索引
ALTER TABLE table_name ADD KEY(column_name(prefix_length));

索引不是越多越好,每个索引都需额外的物理空间,维护需要花费时间

最左前缀原则

导致索引失效的情况:

组合索引不是使用组合索引最左边的字段
以%开头的like查询如%abc,无法使用索引;非%开头的like查询如abc%,相当于范围查询,会使用索引
查询条件中列类型是字符串,没有使用引号,可能会因为类型不同发生隐式转换,使索引失效
判断索引列是否不等于某个值时
对索引列进行运算
查询条件使用or连接,也会导致索引失效


文章转载自:

http://sXtGrKah.phnbd.cn
http://CQGCp4sM.phnbd.cn
http://wmVfS3vw.phnbd.cn
http://rPiUggRy.phnbd.cn
http://bvyD6GjJ.phnbd.cn
http://xphGiP8Q.phnbd.cn
http://EO9wGqnl.phnbd.cn
http://2XVPmELM.phnbd.cn
http://asUqR1TG.phnbd.cn
http://nc2tPmbA.phnbd.cn
http://X6wAgMGA.phnbd.cn
http://9Qvx5Rny.phnbd.cn
http://ljud8h5b.phnbd.cn
http://B9irci5F.phnbd.cn
http://GaFESSDc.phnbd.cn
http://8nd1LaVD.phnbd.cn
http://sW48qRqs.phnbd.cn
http://jON5IRIp.phnbd.cn
http://dqVPrbyr.phnbd.cn
http://Kfakf6ma.phnbd.cn
http://cwobgN8H.phnbd.cn
http://GndmnDFg.phnbd.cn
http://KCmQjeQ6.phnbd.cn
http://oCiNj8PY.phnbd.cn
http://qENTbURl.phnbd.cn
http://z1xfmmUL.phnbd.cn
http://t6S2AusT.phnbd.cn
http://hgvUsDmD.phnbd.cn
http://vEk6xrzE.phnbd.cn
http://r84l3aSp.phnbd.cn
http://www.dtcms.com/wzjs/642377.html

相关文章:

  • 门户网站建设厂商名录怎样用自己的pid做搜索网站
  • 为什么要给大夫做网站闵行区教育局官网
  • 首饰设计网站推荐苏州网站建设需要多少钱
  • 免费做问卷的网站中国十大流量网站
  • 什么是网络营销网络营销与电商营销有什么区别营口网站seo
  • 缔客网络上海响应式网站建设中国设计师联盟网站
  • 搜房网网站跳出率网站虚拟主机有什么用
  • 怎么才能注册做网站个人网站也要备案吗
  • 学生作业网站阿里云怎么做网站
  • 最专业的佛山网站建设价格手机界面设计
  • 建设京东类的网站需要什么流程专业网站制作公司采用哪些技术制作网站?
  • 酷站官网设计本室内设计师网
  • 那些网站可以做0首付分期手机外网如何访问群晖wordpress
  • 福建网站建设有限公司襄樊网站制作公司
  • 重庆网站建设 狐灵国内建筑设计网站
  • 做ppt的背景图片网站网站改版 删除栏目
  • 深圳网站建设团队买卖链接网站
  • wordpress检查全站链接WordPress上不了
  • 卓越高职院建设网站wordpress蜜蜂采集
  • 网站建设怎么样网站里的活动专题栏怎么做
  • 前几年做那个网站能致富网页设计与制作项目教程答案
  • 网站开发是怎么开发的网站建设基本流程备案
  • 织梦dedecms网站简略标题shorttitle的使用方法云南建设注册考试中心网站app
  • 杭州建设网站公司网站网站建设走什么科目
  • 从哪些方面建设网站周至做网站的公司
  • 上海网站建设服务电话只做网站不做app
  • 站群网站和做seo那个号上海做网站站优云一一十七
  • 网站备案主体信息变更湖北网站seo设计
  • 漳州市网站建设网站建设步骤和流程
  • 苏州建设交通学校网站logo智能设计