15 g 的数据库是很小的库了!这个量级正常是不应该存在慢的问题。
1慢可能是服务器的配置过低,尤其是阿里云服务器租用的配置太低了!感觉你说所的找不到存储过程好像就是阿里云最低配的问题。
2你们还用存储过程,和我们以前的系统一样,所有的业务逻辑都是存储过程完成,所以所有的压力都在数据库服务器上,服务器就容易卡,用存储过程还无法负载均衡。
3表的索引缺失或不合理,很重要的原因。
4使用了大量的触发器,触发器是开始一下爽,后来苦一生。坚决不用触发器,数据量大这个是要命的。
5存储过程里使用大量的link 访问其他数据库服务器,尤其是link 给远程库写数据;如果还写远程数据包含在分布式事务里这就更要命了。
日志1g 慢和它没一毛钱关系,就是占一点空间而已
关于数据库安全及其防范方案的分析
随着网络的不断发展,数据的共享日益加强,数据的安全保密越来越重要。为了计算机数据库整体安全性的控制,需要做好很多细节性的工作,并根据具体应用环境的安全需要来分析安全薄弱环节,并制定统一的安全管理策略加以实施,以保证其最高的安全性。
1数据库安全环境的分析
随着时代的发展,我国的计算机信息安全标准也在不断提升。在当下的数据库系统安全控制模块中,我国数据库安全分为不同的等级。但是总体来说,我国的数据库安全性是比较低的,这归结于我国数据技术体系的落后。为了更好的健全计算机数据库体系,进行数据库安全体系的研究是必要的。我国现有的一系列数据安全理论是落后于发达国家的。这体现在很多的应用领域,比如电力领域、金融领域、保险领域等。很多软件都是因为其比较缺乏安全性而得不到较大范围的应用,归根结底是数据库安全性级别比较低。
为了满足现阶段数据库安全工作的需要,进行相关标准的深化研究是必要的。这需要对数据库安全进行首要考虑,且需要考虑到方方面面,才更有利于数据库保密性的控制,从而保证这些数据存储与调用的一致性。
在当前数据库安全控制过程中,首先需要对这些数据进行可用性的分析,从而有利于避免数据库遭到破坏,更有利于进行数据库的损坏控制及其修复。其次为了保证数据库的安全性、效益性,也离不开对数据库整体安全性方案的应用。最后必须对数据库进行的一切 *** 作进行跟踪记录,以实现对修改和访问数据库的用户进行追踪,从而方便追查并防止非法用户对数据库进行 *** 作。
2数据库安全策略的更新
为了满足现阶段数据库安全性方案的应用,进行身份的鉴别是必要的。所谓的身份鉴别就是进行真实身份及其验证身份的配比,这样可以避免欺诈及其假冒行为的发生。身份鉴别模式的应用,表现在用户使用计算机系统进行资源访问时。当然在一些特定情况下,也要进行身份鉴别,比如对某些稀缺资源的访问。
身份鉴别通常情况下可以采用以下三种方法:一是通过只有被鉴别人自己才知道的信息进行鉴别,如密码、私有密钥等;二是通过只有被鉴别人才拥有的信物进行鉴别,如IC卡、护照等;三是通过被鉴别人才具有的生理或者行为特征等来进行鉴别,如指纹、笔迹等。
在当前访问控制模块中,除了进行身份鉴别模式的应用外,还需要进行信息资源的访问及其控制,这样更有利于不同身份用户的权限分配。这就需要进行访问级别的控制,针对各个系统的内部数据进行 *** 作权限的控制,进行自主性及其非自主性访问的控制,满足数据库的安全需要。实现用户对数据库访问权限进行控制,让所有的用户只能访问自己有权限使用的数据。当某一个用户具有对某些数据进行访问的权限时,他还可以把对这些数据的 *** 作权限部分或者全部的转移给其他用户,这样其他的用户也获得了对这些数据的访问权。
为了更好的进行数据库的安全管理,审计功能的应用也必不可少。这需要就数据库的数据进行统一性的 *** 作。这样管理员更加方便对数据库应用情况进行控制,审计功能也有利于对数据库的 *** 作行为进行控制,更有利于控制用户对数据库的访问。攻击检测是通过升级信息来分析系统的内部和外部所有对数据库的攻击企图,把当时的攻击现场进行复原,对相关的攻击者进行处罚。通过这种方法,可以发现数据库系统的安全隐患,从而来改进以增加数据库系统的安全性。
在数据库数据处理过程中,可以进行一些合法查询模式的应用,当需要调取保密数据时,就需要应用推理分析模块。这是数据库安全性方案控制过程中的重难点,而通过这种简单的推理分析方法调取保密数据,是得不到有效解决的。但是我们可以使用以下几种方法来对这种推理进行控制:数据加密的基本思想就是改变符号的排列方式或按照某种规律进行替换,使得只有合法的用户才能理解得到的数据,其他非法的用户即使得到了数据也无法了解其内容。
通过对加密粒度的应用,更有利于进行数据库加密性的控制。其分为几种不同的应用类型等级。在当前应用模块中,需要进行数据保护级别的分析,进行适当的加密粒度的分析。更有利于满足数据库级别加密的需要。该加密技术的应用针对的是整体数据库,从而针对数据库内部的表格、资料等加密。采用这种加密粒度,加密的密钥数量较少,一个数据库只需要一个加密密钥,对于密钥的管理比较简单。但是,由于数据库中的数据能够被许多的用户和应用程序所共享,需要进行很多的数据处理,这将极大的降低服务器的运行效率,因此这种加密粒度只有在一些特定的情况下才使用。
表级加密也是比较常用的方法,这种方法应用于数据库内部的数据加密。针对具体的存储数据页面进行加密控制。这对于系统的运行效率的提升具备一定的帮助,不会影响系统的运行效率。这种方法需要应用到一些特殊工具进行处理,比如解释器、词法分析器等,进行核心模块的控制,进行数据库管理系统源代码的控制及其优化。但是其难以确保数据库管理系统的整体逻辑性,也存在缺陷。记录级加密;这种加密技术的加密粒度是表格中的每一条记录,对数据库中的每一条记录使用专门的函数来实现对数据的加密、解密。通过这种加密方法,加密的粒度更加小巧,具有更好的选择性和灵活性。字段级加密;这种加密技术的加密粒度是表格中的某一个或者几个字段。通过字段级的加密粒度只需要对表格中的敏感列的数据进行加密,而不需要对表格中的所有的数据进行加密。
选择加密算法也是比较常见的数据加密方法。它是数据加密的核心部分。对于数据库的整体安全性的控制具有直接性的影响。通过对加密算法的分析,得知其分为公共密钥加密及其对称加密。在数据加密模块中,需要进行密文及其明文的区分,从而进行明文及其密文的转换,也就是普遍意义上的密码。密码与密钥是两个不同的概念。后者仅是收发双方知道的信息。在数据加密技术中,对密钥进行管理主要包括以下几个方面,产生密钥。产生怎样的密钥主要取决于使用什么样的算法。若产生的密钥强度不一样就称这种算法实现的是非线性的密钥空间,若产生的密钥强度一样就称这种算法实现的是线性的密钥空间。分配密钥、传递密钥:分配密钥就是产生一个密钥并且将这个密钥分配给某个用户使用的过程。
密钥的传递分为不同的应用形式,集中式与分散式。所谓的集中式就是进行密钥整体式的传递;所谓的分散式就是对密钥的多个部分进行划分,以秘密的方法给用户进行传递。通过将整体方法与分散方法应用到存储模块中,更好的满足现阶段数据库整体安全性的需要。对于密钥的备份可以使用和对密钥进行分散存储一样的方式进行,以避免太多的人知道密钥;而销毁密钥需要有管理和仲裁机制,以防止用户对自己的 *** 作进行否认。
3结束语
随着计算机,特别是网络的不断发展,数据的共享日益加强,数据的安全保密越来越重要。本文详细阐述了数据库的安全防范,分别从数据分析、用户鉴别、访问权限控制、审计、数据加密等环节逐一剖析数据库安全。为了计算机数据库整体安全性的控制,需要做好很多细节性的工作,并根据具体应用环境的安全需要来分析安全薄弱环节,并制定统一的安全管理策略加以实施,以保证其最高的安全性。
不知道楼主用的是 Visio 的什么版本
我用的是 Microsoft Office Visio for Enterprise Architects
在新建模型中, 选择建立"数据库"--"数据库模型图"
这样建立好两个实体(表), 并设置好主键后(或者唯一约束/索引, 主表列必须有这个设置, 才能在这个列上设置与其他表的列关联)
在形状工具栏中, 找到"对象关系", 将里面的"关系"拖到绘图中
将有箭头的一端指向主表, 没有箭头的一段指向子表(正确指向表的时候, 表的边框会变红色)
最后单击"关系", 在"数据库属性"窗口中, 可以设置主表的列和子表的列, 设置好后,单击"关联"按钮即可~
建议更改数据库的事务日志,限制文件增长的最大值和定期备份日志和数据。在以下处理之前,最好整体备份整个数据库:
1:由小的事务引起日志溢出,系统能正常启动。
解决办法:
扩大数据库日志空间:
alter database 数据库名 on 设备名=数量(M为单位)
sp_logdevice 数据库名,设备名
清除日志
dump transaction 数据库名 with no_log(no_truncate)
2:由大的事物引起日志溢出,系统较长时间内无法正常启动或数据库无法恢复
解决办法:
强行清空日志。
在实在无法恢复数据库或有近期备份的情况下,可采用强行清空日志的方法。采取这种方法的后果有可能彻底破坏数据库。执行步骤如下:
Ⅰ 以-v 方式启动SQL SERVER(不检测日志)
Ⅱ 修改数据库状态为-32768(阻塞状态)
update sysdatabases set status=-32768 where name=数据库名
Ⅲ 授权sybase_ts_role权限(sybase_ts_role为SQL SERVER特殊管理员权限,在日常的数据库管理中,不需要这个角色)
sp_role “grant”,”sybase_ts_role”,sa
set role “sybase_ts_role”
Ⅳ 清除日志
dbcc rebuild_log(数据库名,1,1)
完成以上步骤后,重新启动SQL SERVER即可。如果数据库能正常启动,数据库就恢复完成;如果无法启动,只能重新创建数据库。
有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如
检查优化并修复所有的数据库用:
# mysqlcheck -A -o -r -p
Enter password:
database1 OK
database2 OK
----------
修复指定的数据库用
# mysqlcheck -A -o -r Database_NAME -p
即可
另外如果只是对某个表进行修复可以用:myisamchk或isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablenameMYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablenameMYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rclocal里面启动MySQL服务器前:
[ -x /tmp/mysqlsock ] && /pathtochk/myisamchk -of /DATA_DIR//MYI
其中的/tmp/mysqlsock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是 /var/lib/mysql/mysqlsock,对于使用源码安装则是/tmp/mysqlsock可以根据自己的实际情况进行变更,而 pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
1,简单的修复模式
myisamchk -r -q path/数据库/坏表MYI
注:-r ----恢复模式 -q ----快速修复
2,使用安全修复模式
myisamchk --safe-recover path/数据库/坏表MYI
3,困难的修复模式
如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段 。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:
把数据文件移更安全的地方。
使用表描述文件创建新的(空)数据和索引文件:
shell> mysql db_name
mysql> Delete FROM tbl_name;
mysql> quit
将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)
回到阶段2。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。
4,非常困难的修复模式
只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。
从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk -r启动。
如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。
5,优化表结构
myisamchk -r 表
也可以使用sql语句来优化OPTIMIZE TABLE
本方法参考自mouse博客
以上就是关于数据库高手请进 数据文件过大的问题全部的内容,包括:数据库高手请进 数据文件过大的问题、关于数据库安全及其防范方案的分析(数据库的安全策略)、visio2013注册数据库被破坏了怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)