抑或完全不实施。要么完全无履。要么完全不执。

顿时首文章能阐述清楚与数据库连带的季单概念:事务、数据库读现象、隔离级别、锁机制  

就首文章能阐述清楚与数据库连锁的季独概念:事务、数据库读现象、隔离级别、锁机制  

马上首文章能阐述清楚与数据库系的季单概念:事务、数据库读现象、隔离级别、锁机制  

一、事务

一、事务

一、事务

预先来拘禁下百度到对数据库事务的定义:

先行来拘禁下百度过全面对数据库事务之概念:

预先来拘禁下百渡过全面对数据库事务的概念:

  作为单个逻辑单元执行同样密密麻麻操作,要么完全执行,要么完全不执行。事务处理可以包除非事务性单元内的富有操作都事业有成做到,否则不见面永远更新面向数据的资源。

  作为单个逻辑单元执行同一雨后春笋操作,要么完全履行,要么完全无履行。事务处理可以包除非事务性单元内之所有操作都成就,否则不会见永远更新面向数据的资源。

  作为单个逻辑单元执行同一雨后春笋操作,要么完全执行,要么完全无执。事务处理可以管除非事务性单元内之兼具操作都事业有成做到,否则不会见永远更新面向数据的资源。

政工有四独特性,称为ACID属性:

作业有四单特性,称为ACID属性:

事务有四只特性,称为ACID属性:

1、原子性(Atomicity):事务是一个原子单位,要么全部执,要么全部免执行。

1、原子性(Atomicity):事务是一个原子单位,要么全部履行,要么全部未履行。

1、原子性(Atomicity):事务是一个原子单位,要么全部执,要么全部请勿执。

2、一致性(Consistent):事务的上马与了结,数据都得保持一致状态。

2、一致性(Consistent):事务的开始与了,数据都须保持一致状态。

2、一致性(Consistent):事务的起来与了结,数据都不能不保持一致状态。

3、隔离性(isolation):数据库系统提供隔离机制,保证并发事务间是彼此不扰乱的。也就代表事务处理过程中之中间状态对其它的工作是晶莹剔透底。

3、隔离性(isolation):数据库系统提供隔离机制,保证并发事务中是互为不干扰的。也就算意味着事务处理过程中的中间状态对另的业务是晶莹剔透的。

3、隔离性(isolation):数据库系统提供隔离机制,保证并发事务间是相互不扰乱的。也尽管表示事务处理过程被之中间状态对其它的事情是晶莹剔透的。

4、持久性(Durable):事务完成后,对数码的修改是永久性的,即使出现系统故障为能够保持。

4、持久性(Durable):事务完成后,对数码的修改是永久性的,即使出现系统故障也克保持。

4、持久性(Durable):事务完成以后,对数码的改动是永久性的,即使出现系统故障也能保持。

政工是如出一辙多样SQL语句之成团,如果无工作,会面世啊问题?或者说SQL只能一长长的一长条之单个执行,会冒出什么问题?

业务是同等层层SQL语句的集,如果无事情,会油然而生啊问题?或者说SQL只能一长长的一长长的的么执行,会起啊问题?

政工是同样多级SQL语句之集聚,如果没有工作,会出现什么问题?或者说SQL只能一长长的一长长的之单个执行,会并发什么问题?

这可怜粗略,如果无事情,我们平素存面临的银行转化就无法操作。

其一深简短,如果没有事情,我们平常生活着之银行转账就无法操作。

此充分粗略,如果没工作,我们平素活遭之银行转化就无法操作。

亚、数据库读现象

其次、数据库读现象

老二、数据库读现象

  ACID属性里面有一个凡隔离级别,即出现事务间相互不打搅。互相不打扰只是一个巅峰状态,且待耗费巨大的性能。在我们其实利用过程遭到,是有很死的灰度空间的:隔离级别有水平的分别。所以要断程度决定的比较弱的口舌,就见面起脏读不可再读以及幻读的现象。

  ACID属性里面来一个是与世隔膜级别,即出现事务间互相不打扰。互相不干扰只是一个极状态,且要吃巨大的性质。在咱们实际利用过程被,是存好非常之灰度空间的:隔离级别有水平的分。所以一旦断程度决定的较弱的言语,就会发脏读不足再读以及幻读的现象。

  ACID属性里面来一个凡是割裂级别,即出现事务间交互不惊动。互相不扰乱只是一个顶状态,且需要吃巨大的性能。在咱们实际上应用过程中,是是很特别之灰度空间的:隔离级别有程度的区分。所以要是断程度决定的比弱的言辞,就见面时有发生脏读不得再读以及幻读的现象。

1、脏读

1、脏读

1、脏读

事务T1修改某只字段的价值,然后事务T2朗诵博该值,此后T1撤销了针对性拖欠字段的更新,或者更新成为另外的价值才commit到数据库被,这样T2读取的数目是废的抑不当的。导致T2依据脏数据所召开的操作为是错误的。

事务T1改某只字段的价,然后事务T2诵读博该值,此后T1撤销了对该字段的换代,或者更新成为另外的价值才commit到数据库中,这样T2读取的数目是低效的要么不当的。导致T2依据脏数据所召开的操作为是左的。

事务T1改某只字段的值,然后事务T2诵读博该值,此后T1撤销了对该字段的创新,或者更新成为另外的价才commit到数据库被,这样T2读取的数目是没用的或不当的。导致T2依据脏数据所举行的操作也是荒唐的。

思聪同学中午错过饭店用,看到窗边的坐席吃如花同学占了,思聪认为此座位就被占有了,就回身去探寻另外的席位。不料,如花同学起身离开了。事实是:如花并无是用餐,而是临时因于那边等她的约会对象,只是临时小坐一会,并从未真正“commit”。

思聪同学中午错过饭馆用,看到窗边的座位吃设花同学占了,思聪认为此位子都被占有了,就转身去搜寻其它的座席。不料,如花同学起身离开了。事实是:如花并无是吃饭,而是临时因在那里当她底约会对象,只是临时小坐一会,并没真正“commit”。

思聪同学中午错过饭店吃饭,看到窗边的位子为设花同学占了,思聪认为这位子早已被占有了,就转身去探寻另外的座席。不料,如花同学起身去了。事实是:如花并无是偏,而是临时因在那里等其底约会对象,只是临时小坐一会,并不曾真正“commit”。

2、不可再读

2、不可再读

2、不可再读

每当数据库访问中,一个业务限制外的有数不行同之查询也回了不同之数。

每当数据库访问中,一个业务限制外的星星点点不成同之询问也回了不同之数据。

在数据库访问中,一个作业限制外的鲜浅同之询问也回了不同的多少。

事务T1朗诵博有同数据,事务T2诵读博并修改了拖欠多少,T1为了对读取值进行认证而重读取,却发现赢得了不同之结果。

事务T1诵读博有同数,事务T2读博并修改了该数据,T1为了对读取值进行验证而又读取,却发现抱了不同的结果。

事务T1读博有一样数码,事务T2念博并修改了拖欠数量,T1为了对读取值进行说明而重复读取,却发现抱了不同之结果。

思聪同学中午去餐饮店用,看到窗边的座席是空的,便屁颠屁颠的跑去打饭,回来后倒发现是位子给设花同学赶紧去矣。

思聪同学中午去餐馆用餐,看到窗边的席位是拖欠的,便屁颠屁颠的飞去打饭,回来晚也发现这个座位于如花同学连忙去了。

思聪同学中午去食堂就餐,看到窗边的座位是空的,便屁颠屁颠的走去打饭,回来后可发现这位子吃如花同学赶紧去矣。

3、幻读

3、幻读

3、幻读

幻读解决了不足再读的题材,即以跟一个事情限制外,两不好同之询问结果是平等的。但是得新增表中之数码记录。

幻读解决了不可再读之问题,即在和一个作业限制外,两不成同的查询结果是同一之。但是足以新增表中的数额记录。

幻读解决了不足再读的问题,即于同一个事情限制外,两赖同之询问结果是如出一辙的。但是可以新增表中之多少记录。

幻读是乘事务T1对表中的数码开展改动,假而修改涉及了表中全部的多少实施,同时次独业务也改者表中的数据,这种修改是朝着表中插入一漫长新的数目。后面就见面起操作了T1事务的用户发现表中还有无产生改的多寡实行,仿佛出现了幻觉一样。

幻读是负事务T1针对表中的数额开展改动,假而修改涉及了表中全部的多寡实施,同时次个业务也改是表中的数,这种修改是往表中插一漫长新的数码。后面就是会并发操作了T1事务之用户发现表中还有没有出涂改的数据实行,仿佛出现了幻觉一样。

幻读是依赖事务T1对准表中的多寡进行修改,假而修改涉及了表中全部的数量实行,同时次只工作也改是表中的数目,这种修改是通向表中插一长新的多少。后面就会面世操作了T1事务之用户发现表中还有没有产生修改的数实施,仿佛出现了幻觉一样。

思聪同学中午去食堂用,看到窗边的座席是空的,便屁颠屁颠的跑去打饭,回来后窗边的席还是拖欠的,便颇快乐坐上准备上马用,这时候也发现而花同学搬了一个小板凳坐在边上狼吞虎咽,思聪顿时没有了胃口。

思聪同学中午错过餐馆吃饭,看到窗边的席是拖欠的,便屁颠屁颠的跑去打饭,回来后窗边的座位还是拖欠的,便杀欣喜为上准备开始吃饭,这时候也发现而花同学搬了一个小板凳坐在边际狼吞虎咽,思聪顿时没有了胃口。

思聪同学中午错过餐馆吃饭,看到窗边的位子是拖欠的,便屁颠屁颠的蒸发去打饭,回来晚窗边的坐席还是空的,便十分喜悦为上来准备开始进食,这时候也发现而花同学搬了一个小板凳坐于两旁狼吞虎咽,思聪顿时没有了胃口。

假使急需缓解污染读、不可再读、幻读等这些数据库读现象,就务须呼应提高工作之隔断级别。但是数据库的隔离级别越强,对应之面世能力就是愈加弱,性能也便相应的越差,所以我们尚亟需依据现实的利用场景去衡量。

若果急需解决污染读、不可再读、幻读等这些数据库读现象,就得相应提高工作的割裂级别。但是数据库的隔断级别越强,对应之面世能力就进一步弱,性能为就算相应的越差,所以我们还索要依据具体的采用场景去权衡。

万一急需解决污染读、不可再读、幻读等这些数据库读现象,就必相应增长业务之割裂级别。但是数据库的隔断级别越强,对应的产出能力就愈弱,性能为尽管相应的越差,所以我们尚待因具体的施用场景去衡量。

老三、事务隔离级别

其三、事务隔离级别

老三、事务隔离级别

1、未提交读

1、未提交读

1、未提交读

工作的低隔离级别,在这种隔离级别下,一个业务可以读取另外一个事务未提交的数额。

工作的低隔离级别,在这种隔离级别下,一个业务可以读取另外一个事情未提交的数码。

作业之低隔离级别,在这种隔离级别下,一个工作可以读取另外一个作业未提交的多少。

数据库锁实现原理:

数据库锁实现原理:

数据库锁实现原理:

事务T在宣读数据的上没有对数码进行加锁,事务T在改动数据的时候对数据多行级共享锁

事务T在念数据的时没对数据开展加锁,事务T在改数据的时段针对数码多行级共享锁

事务T在念数据的当儿从不对数据进行加锁,事务T在窜数据的下针对数码多行级共享锁

T1在读取数据时,T2可以本着同样数量开展读取、修改。因为T1没有展开其他锁操作;当T2对准记录进行修改时,T1再次读取数据可以读取到T2修改后的数目。因为T2对数码进行修改才增了行级共享锁,T1可以另行追加共享读锁进行多少读取(尽管T2没有交到业务)

T1在读取数据时,T2可以对同样数量开展读取、修改。因为T1没有进展其它锁操作;当T2针对性记录进行修改时,T1再次读取数据可以读取到T2修改后底数额。因为T2对数据开展改动单独长了行级共享锁,T1可以重新增加共享读锁进行数据读取(尽管T2没有付诸业务)

T1在读取数据时,T2可以针对同数量进行读取、修改。因为T1没有开展其它锁操作;当T2针对记录进行改动时,T1再次读取数据可以读取到T2修改后底数。因为T2对数码开展改动只是增加了行级共享锁,T1可以另行搭共享读锁进行多少读取(尽管T2没有交到业务)

如上所述,这种隔离级别,会招脏读现象

看来,这种隔离级别,会招致脏读现象

总的看,这种隔离级别,会造成脏读现象

2、已交付读

2、已交由读

2、已交付读

当一个事情修改数据经过遭到,如果工作没有展开付出,其他工作不能够读博该多少

当一个作业修改数据经过被,如果事情没有进行付出,其他作业不能够读博该数量

于一个事情修改数据经过被,如果工作没有进展付出,其他业务不能够念博该数额

数据库锁实现原理:

数据库锁实现原理:

数据库锁实现原理:

事务T在读取数据时多行级共享锁,读取一旦结束,立即释放;事务T在改动数据经常多行级排他锁,直到工作了才出狱。

事务T在读取数据时多行级共享锁,读取一旦结束,立即释放;事务T在改动数据经常多行级排他锁,直到工作了才出狱。

事务T在读取数据时长行级共享锁,读取一旦结束,立即放飞;事务T在修改数据时多行级排异锁,直到工作了才出狱。

T1在读取数据的过程遭到,T2也可以针对同样数量开展读取,但是未可知开展改动(T1增加的是联名享锁,T2也可以追加共享锁,但是未可知益排他锁)。T1读博完后,会及时放飞并享锁,这时T2可以多排异锁,对数据进行修改,而这时候T1既无可知针对数据开展读取也不可知开展改动,直到T2事务了。

T1在读取数据的过程被,T2也堪本着同样数量进行读取,但是非克进行修改(T1增加的凡同台享锁,T2也可加共享锁,但是非克充实排异锁)。T1朗诵博完后,会立马释放并享锁,这时T2可以多排异锁,对数码进行修改,而这时T1既不克对数据进行读取也未能够拓展修改,直到T2事务了。

T1在读取数据的长河遭到,T2也得针对同数量进行读取,但是未能够展开修改(T1增加的凡同台享锁,T2也得多共享锁,但是非可知长排异锁)。T1读博完后,会马上放飞并享锁,这时T2可以增加排异锁,对数据开展修改,而此刻T1既非克针对数码开展读取也不能够进行改动,直到T2事务了。

总的来说,这种隔离级别,解决了脏读问题,但是非可知解决不行再读现象。

看来,这种隔离级别,解决了脏读问题,但是不能够缓解不行再读现象。

总的来说,这种隔离级别,解决了脏读问题,但是非克化解不行再读现象。

3、可又读

3、可还读

3、可重新读

事务T在数额读取时,必须多行级共享锁,直到工作了;事务T在改动数据经过遭到,必须多行级排他锁,直到数据了。

事务T在数码读取时,必须多行级共享锁,直到工作了;事务T在修改数据经过中,必须多行级排他锁,直到数据截止。

事务T在数码读取时,必须长行级共享锁,直到工作了;事务T在修改数据经过中,必须长行级排异锁,直到数据截止。

数据库锁实现原理:

数据库锁实现原理:

数据库锁实现原理:

T1在读取数据的经过中,T2也可针对相同数量开展读取,但是未可知开展改动(T1增加的凡一块享锁,T2也可以长共享锁,但是非克添排异锁)。直到T1事务了晚,才会放并享锁,这时T2才得追加排异锁,对数码进行修改。

T1在读取数据的历程遭到,T2也可以对相同数量进行读取,但是不能够展开修改(T1增加的凡一路享锁,T2也得以长共享锁,但是未能够益排异锁)。直到T1事务了后,才会放出并享锁,这时T2才好追加排异锁,对数据开展修改。

T1在读取数据的历程被,T2也得以本着相同数量开展读取,但是非克拓展改动(T1增加的凡同步享锁,T2也足以长共享锁,但是不能够增加排异锁)。直到T1事务了晚,才会释放并享锁,这时T2才好追加排异锁,对数码进行改动。

看来,这种隔离级别,解决了不足再读现象,但是这种隔离级别解决不了幻读的问题:

由此看来,这种隔离级别,解决了不足再读现象,但是这种隔离级别解决不了幻读的题目:

总的看,这种隔离级别,解决了不足再读现象,但是这种隔离级别解决不了幻读的题材:

T1进行询问,读取了10久记下,并针对性十长达记下多了行级锁,此时T2是无法对这10履数据进行改动操作的,但是由尚未表级锁,它可以追加一修满足T1查询条件的笔录。随后T1在进展查询时,会发觉尽管10长长的记下没有转,但是忽然多矣同一长记下。

T1进行查询,读取了10久记下,并对准十长长的记下多了行级锁,此时T2是心有余而力不足对立即10实施数据开展改动操作的,但是出于没有表级锁,它可以多一条满足T1查询条件的笔录。随后T1在进行查询时,会发现尽管10长条记下没有变动,但是忽然多矣一如既往漫长记下。

T1进行查询,读取了10长达记下,并针对十长长的记下多了行级锁,此时T2凡是无能为力对立即10执行数据开展改动操作的,但是出于没表级锁,它可以长一条满足T1询问条件的笔录。随后T1在展开询问时,会发现虽然10长条记下没有更改,但是忽然多了一样漫长记下。

4、序列化

4、序列化

4、序列化

发出幻读是由于并未开展界定查询时莫增加范围锁。

来幻读是由尚未开展限查询时从没加范围锁。

产生幻读是由没有开展限查询时未尝加范围锁。

数据库锁实现原理:

数据库锁实现原理:

数据库锁实现原理:

 事务T在读取数据时,必须事先增表级共享锁,直到工作了才放走;事务T在修改数据经常,必须先行增表级排异锁,直到工作了才出狱。

 事务T在读取数据时,必须事先增表级共享锁,直到工作了才放;事务T在改动数据经常,必须事先增表级排异锁,直到工作了才假释。

 事务T在读取数据时,必须优先增表级共享锁,直到工作了才刑满释放;事务T在改动数据经常,必须事先增表级排他锁,直到工作了才放。

T1在读取A表时,增加了表级共享锁,此时T2也得以读取A表,但是未可知拓展其他数据的改动,直到T1事务了。随后T2可以长对A表的表级排异锁,此时T1请勿克念取A表中的别样数据,更不克展开修改。

T1在读取A表时,增加了表级共享锁,此时T2也得读取A表,但是非克进行任何数据的改,直到T1事务了。随后T2可以增加对A表的表级排异锁,此时T1休能够读取A表中的任何数据,更无能够进行修改。

T1在读取A表时,增加了表级共享锁,此时T2也可读取A表,但是不能够拓展其它数据的改,直到T1事务了。随后T2可以追加对A表的表级排异锁,此时T1未可知诵取A表中的其余数据,更非克展开修改。

总的来说,可序列化解决了污染读、不可再读、幻读等读现象,但是隔离级别越大的同时,在并发性上啊便更低。

看来,可序列化解决了污染读、不可再读、幻读等读现象,但是隔离级别越高的以,在并发性上也就算越发没有。

由此看来,可序列化解决了污染读、不可再读、幻读等读现象,但是隔离级别越强的而,在并发性上呢就算越小。

季、事务操作实践 

季、事务操作实践 

季、事务操作实施 

默认情况下,MYSQL是自行提交的,也不怕意味着平时咱们实行同样长update语句时,MYSQL是机动帮助我们付出的,尽快我们从不显得执行commit命令。但是这种唯有适用于仅仅条SQL的施行。

默认情况下,MYSQL是机动提交的,也就算意味着平时咱们尽同一修update语句时,MYSQL是活动帮咱付出的,尽快我们尚无亮执行commit命令。但是这种唯有适用于单纯条SQL的实施。

默认情况下,MYSQL是活动提交的,也就代表平时咱们尽同一久update语句时,MYSQL是自动帮咱提交的,尽快我们从没出示执行commit命令。但是这种单纯适用于仅条SQL的履。

倘我们怀念如果同时履行多长达SQL,并且实施进程中来SQL执行好,需要回滚前面都成实行的SQL或者最终想回滚全部,则须出示的使用工作。

使我们纪念要又实行多长达SQL,并且实施进程中出SQL执行好,需要回滚前面已经成功施行的SQL或者最终想回滚全部,则要出示的使工作。

倘若我们想只要以施行多长长的SQL,并且实施进程遭到出SQL执行好,需要回滚前面早已打响推行之SQL或者最终想回滚全部,则必须出示的运用工作。

  1. 千帆竞发同项业务:start tr ansaction或者begin;

  2. 授业务:commit;

  3. 回滚事务:rollback;

  4. 业务提交以后的操作:chain;

  5. 事情回滚之后的操作:release;

  6. 改时连续的交付方式:set autocommit;如果安了set
    autocommit=0,则设置后所有的事体都亟待显式的通过命令来进行付出或者回滚。

  1. 开头同起工作:start tr ansaction或者begin;

  2. 付出业务:commit;

  3. 回滚事务:rollback;

  4. 工作提交以后的操作:chain;

  5. 作业回滚之后的操作:release;

  6. 修改时连接的交给方式:set autocommit;如果设置了set
    autocommit=0,则装后有所的政工都亟需显式的通过命令来进展提交或者回滚。

  1. 起同件工作:start tr ansaction或者begin;

  2. 提交业务:commit;

  3. 回滚事务:rollback;

  4. 事务提交以后的操作:chain;

  5. 政工回滚之后的操作:release;

  6. 修改时总是的付方式:set autocommit;如果设置了set
    autocommit=0,则装后有所的工作都用显式的通过命令来进展付出或者回滚。

查询时对话的事情隔离级别

查询时对话的政工隔离级别

查询时对话的作业隔离级别

查询时系统的事务隔离级别

查询时网的事体隔离级别

查询时系的工作隔离级别

修改时对话的业务隔离级别

改时对话的政工隔离级别

改时对话的业务隔离级别

付给读演示

交读演示

提交读演示

客户端A 开启事务,并创新数据

客户端A 开启事务,并创新数据

客户端A 开启事务,并更新数据

这会儿事务还不曾交到,开启客户端B,并开展询问,此时的数目还是未更新前的

这儿事务还没交,开启客户端B,并拓展询问,此时的数量还是无更新前之

此刻事务还从未提交,开启客户端B,并开展询问,此时底多寡还是不更新前之

客户端A进行工作提交,然后客户端B查询,此时凡时的数码

客户端A进行工作提交,然后客户端B查询,此时是时髦的多寡

客户端A进行作业提交,然后客户端B查询,此时是行的数目

commit and chain的演示

commit and chain的演示

commit and chain的演示

万一以交付的时刻以commit and chain,那么在付出后当即开始一个初的事务

而在交付的上用commit and chain,那么以付出后立开始一个初的作业

一经以提交的时刻用commit and chain,那么当付出后立马开始一个新的政工

A提交业务后,B再展开询问

A提交业务后,B再进行询问

A提交业务后,B再展开询问

被事务会隐式解锁

展事务会隐式解锁

展事务会隐式解锁

锁表期间,用start transaction 命令开始一个初工作,则会隐式的履unlock
tables

锁表期间,用start transaction 命令开始一个初业务,则会隐式的推行unlock
tables

锁表期间,用start transaction 命令开始一个初业务,则会隐式的施行unlock
tables

A对发明进行写锁操作

A对表展开写锁操作

A对发明展开写锁操作

此时B进行询问:由于吃A锁表,所以查询被打断

这会儿B进行查询:由于深受A锁表,所以查询被死

此时B进行查询:由于受A锁表,所以查询被堵塞

A开启一个事务

A开启一个事情

A开启一个政工

是因为A开启事务,隐式的假释了写锁,所以B的查询不再给死

由A开启事务,隐式的放了写锁,所以B的询问不再让堵塞

鉴于A开启事务,隐式的刑释解教了写锁,所以B的询问不再给卡住

SAVEPOINT的使用

SAVEPOINT的使用

SAVEPOINT的使用

政工中可以通过定义SAVEPOINT,指定回滚事务的一个片
A开启事务并insert一长达记下,并设置savepoint

事情中得以经过定义SAVEPOINT,指定回滚事务的一个有的
A开启事务并insert一漫漫记下,并设置savepoint

事情中得经定义SAVEPOINT,指定回滚事务的一个部分
A开启事务并insert一长条记下,并设置savepoint

B进行查询,查询及之是开启事务前的多寡

B进行询问,查询到的凡敞开事务前之数目

B进行询问,查询及之凡开事务前之多少

A又栽入一修数据,然后回滚到savepoint

A又栽入一久数据,然后回滚到savepoint

A又栽入一长条数,然后回滚到savepoint

B进行询问

B进行查询

B进行询问

作者:冬瓜蔡
原文:http://www.cnblogs.com/dongguacai/p/7114885.html
作者:冬瓜蔡
原文:http://www.cnblogs.com/dongguacai/p/7114885.html
作者:冬瓜蔡
原文:http://www.cnblogs.com/dongguacai/p/7114885.html

再多Mysql参考情节:http://www.roncoo.com/article/index?tn=Mysql

又多Mysql参考情节:http://www.roncoo.com/article/index?tn=Mysql

重多Mysql参考情节:http://www.roncoo.com/article/index?tn=Mysql

相关文章