数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源。 为了尽量减少锁定的开销,数据库引擎自动将资源锁定在适合任务的级别。 锁定在较小的粒度(例如行)可以提高并发度,但开销较高,因为如果锁定了许多行,则需要持有更多的锁。 锁定在较大的粒度(例如表)会降低了并发度,因为锁定整个表限制了其他事务对表中任意部分的访问。 但其开销较低,因为需要维护的锁较少。
数据库引擎通常必须获取多粒度级别上的锁才能完整地保护资源。 这组多粒度级别上的锁称为锁层次结构。 例如,为了完整地保护对索引的读取,数据库引擎实例可能必须获取行上的共享锁以及页和表上的意向共享锁。
MySQL有三种锁的级别:页级、表级、行级。
MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level
locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
MySQL这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
每种锁可以在网上查询详细说明。主要看你用什么存储引擎。
网上有很多这样的资料,一般由加密解密构成!给你一份资料,你学习学习吧!!!一、加密、解密思路我们知道数据库文件(.dbf)的数据结构分为三部分:文件头部分、字段描述部分和记录部分。文件头部分的第一个字节是chr(03),这样,就可以
通过修改文件头的第一个字节,使启用正常的打开方式不能浏览数据库内容,达到加密的目的;解密时,将加密数据库文件的文件头第一个字节修改为
正常的数据库文件的第一个字节,即可对它进行正常 *** 作。
二、加密函数
function jiami
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要加密的文件不存在!!"",0+48,""错误提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0 &&打开文件成功
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
=FWRITE(hle,iif(fbyte==chr(3),chr(0),chr(26)))
&&假如第一个字节是chr(3)则用chr(0),否则用chr(26)写入
=FCLOSE(hle)
else
=messagebox(""试图文件打开错误!!"",0+48,""加密错误提示"")
endif hle>0
endif
return
三、解密函数
function jiemi
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要解密的文件不存在!!"",0+48,""错误提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
if fbyte=chr(0).or.chr(26)
=FWRITE(hle,iif(fbyte=chr(0),chr(3),chr(245)))
endif
=FCLOSE(hle)
else
=messagebox(""试图文件打开错误!!"",0+48,""解密错误提示"")
endif hhandle>0
endif
return
四、调用加(解)密函数
启动VFP,将加密、解密函数在程序调用之前定义,然后建立表单,在表单中建立两个命令按钮,命名为“加密”、“解密”;
在命令按钮“加密”的click事件中添加代码:“=jiami(""要加密的数据库文件名"",off)”
如果要加密多个数据库文件,则调用几次加密函数即可);
同理在命令按钮“解密”的click事件中添加代码:“=jiemi(""要解密的数据库文件名"",off)”,如果要解密多个加密数据库文件,则多调用几
次解密函数即可。
在表单中,点击“加密”按钮,则执行加密 *** 作,点击“解密”按钮,执行解密 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)