|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性数据|数据库|成绩
成绩背景及特性:
我们在利用多用户数据库经常常会碰着数据更新失利、删除掉等情形,假如有多个用户且同时会见一个数据库则当他们的事件同时利用不异的数据时大概会产生并提问题。
并提问题包含:
1.丧失或掩盖更新。(幻像读)
2.未确认的相干性(脏读)。
3.纷歧致的剖析(非反复读)。
具体形貌:
1.丧失更新
当两个或多个事件选择统一行,然后基于最后选定的值更新该行时,会产生丧失更新成绩。每一个事件都不晓得别的事件的存在。最初的更新将重写由别的事件所做的更新,这将招致数据丧失。
比方,两个编纂职员制造了统一文档的电子复本。每一个编纂职员自力地变动其复本,然后保留变动后的复本,如许就掩盖了原始文档。最初保留其变动复本的编纂职员掩盖了第一个编纂职员所做的变动。假如在第一个编纂职员完成以后第二个编纂职员才干举行变动,则能够制止该成绩。
2.未确认的相干性(脏读)
当第二个事件选择别的事件正在更新的行时,会产生未确认的相干性成绩。第二个事件正在读取的数据还没有确认而且大概由更新此行的事件所变动。
比方,一个编纂职员正在变动电子文档。在变动过程当中,另外一个编纂职员复制了该文档(该复本包括到今朝为止所做的全体变动)并将其分发给预期的用户。今后,第一个编纂职员以为今朝所做的变动是毛病的,因而删除所做的编纂并保留了文档。分发给用户的文档包括不再存在的编纂内容,而且这些编纂内容应以为从未存在过。假如在第一个编纂职员断定终极变动后任何人都不克不及读取变动的文档,则能够制止该成绩。
3.纷歧致的剖析(非反复读)
当第二个事件屡次会见统一行并且每次读取分歧的数据时,会产生纷歧致的剖析成绩。纷歧致的剖析与未确认的相干性相似,由于别的事件也是正在变动第二个事件正在读取的数据。但是,在纷歧致的剖析中,第二个事件读取的数据是由已举行了变动的事件提交的。并且,纷歧致的剖析触及屡次(两次或更多)读取统一行,并且每次信息都由别的事件变动;因此该行被非反复读取。
比方,一个编纂职员两次读取统一文档,但在两次读取之间,作者重写了该文档。当编纂职员第二次读取文档时,文档已变动。原始读取不成反复。假如只要在作者全体完成编写后编纂职员才能够读取文档,则能够制止该成绩。
4.幻像读
当对某行实行拔出或删除操纵,而该行属于某个事件正在读取的行的局限时,会产生幻像读成绩。事件第一次读的行局限显现出个中一行已不复存在于第二次读或后续读中,由于该行已被别的事件删除。一样,因为别的事件的拔出操纵,事件的第二次或后续读显现有一行已不存在于原始读中。
比方,一个编纂职员变动作者提交的文档,但当临盆部门将其变动内容兼并到该文档的主复本时,发明作者已将未编纂的新质料增加到该文档中。假如在编纂职员和临盆部门完成对原始文档的处置之前,任何人都不克不及将新质料增加到文档中,则能够制止该成绩。
--------------------------------------------------------------------------------------------------------
从下面能够看到,办理并发次要是用到了锁和事件。
锁:给纪录或表加上锁是为了对以后操纵工具加上一个形态暗示位,
让别的用户在猎取编纂权限时有了判别。
事件:是为了包管一组操纵的完全性。(要末就全体乐成,要末就全体失利)
--------------------------------------------------------------------------------------------------------
一样平常处置并提问题时我如许做:
1.开启事件。
2.请求写权限,也就是给工具(表或纪录)加锁。
3.假如失利,则停止事件,过一会重试。
4.假如乐成,也就是给工具加锁乐成,避免别的用户再用一样的体例翻开。
5.举行编纂操纵。
6.写进所举行的编纂了局。
7.假如写进乐成,则提交事件,完成操纵。
8.假如写进失利,则回滚事件,作废提交。
9.(7.8)两步操纵已开释了锁定的工具,恢复到操纵前的形态。
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKEabc%‘,MySQL将使用索引;如果查询条件是LIKE%abc’,MySQL将不使用索引。 |
|