首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

Sybase数据库的性能优化(-)

    在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题。何谓“好性能”性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:· 减少竞争和等待的次数,尤其是磁盘读写等待次数· 利用更快的部件· 减少利用资源所需的时间绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。为了取得更好的数据库性能,...
类别:数据库 - SYSBASE    查看:128    更新:2014-05-19

利用悲观锁解决数据库死锁

这边讲述的数据库死锁是由于查询条件顺序不对而造成的一类,主要是两个线程在同时对一个数据库表进行操作时,出现了下列情况,假设一个数据库表内有5行数据,线程1需要对1-4行数据进行update操作,而线程2需要对2-5行数据进行update操作,但是由于操作的顺序调整的不正确,线程1是对数据行1,2,3,4这样的顺序操作,并且加入batch的,而线程2是对数据行5,4,3,2这样的顺序操作的,并且加入batch,于是锁就这样产生了: 当线程1的executeBatch进行批量update时,锁住了123行数据,开始操第4行数据时,此时线程二的executeBatch正当操作完第4行数据,准备操作第3行数据,而此时线程2则拿着4,5行数据的锁,并且不会释放。 于是线程1发现第4行...
类别:数据库 - ORACLE    查看:94    更新:2014-05-19

Oracle数据库的备份及恢复策略研究

恢复丢失的数据库文件在很大程度上取决于所采用的备份策略。本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例。 引言   随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题。为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质、操作系统、软件和其它事件导致重要数据库文件严重损坏的情况下影响RDBMS(关系数据库管理系统),进而影响信息系统的正常运行。这就需要在此类系统失败的情况履芄患笆薄⒂行У亟性帜鸦指础;指炊У氖菘馕募诤艽蟪潭壬先【鲇谒捎玫谋阜莶...
类别:数据库 - ORACLE    查看:124    更新:2014-05-19

MySQL数据库:root用户密码重置方法

1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运行:net stop mysql,如未加载为服务,可直接在进程管理器中进行关闭。 2、以安全模式启动MySQL Linux下,运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe --skip-grant-tables 3、完成以后就可以不用密码进入MySQL了 Linux下,运行 /usr/local/mysql/bin/mysql -u root -p 进入 Windows下,运行 X:/MySQL/bin/mysql -u root -p 进入 4、更改密码 >use mysql >update user set password=passwor...
类别:数据库 - MySQL    查看:113    更新:2014-05-19

MySQL数据库:server has gone away问题与解决

一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。   还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手 mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。   解决MySQL server has gone away   1、应用程序(比如PHP)长时间...
类别:数据库 - MySQL    查看:138    更新:2014-05-19

MySQL数据库:Replace INTO的异同

REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。   注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。   所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如&ldq...
类别:数据库 - MySQL    查看:113    更新:2014-05-19

MySQL数据库死掉及拒绝服务的解决方法

从Mysql 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起的Reconnect重新连接请求不会被接受,需要重新建立新连接,这就导致了SER的重连机制不能正常工作:SER只会在需要操作数据库时去使用同一个连接接口,断开了则发起重新连接请求,而且这个问题短期内SER也不能够解决。 下文中将具体讲述处理的方法: 1.使用Mysql 4.0或4.1版本,如果没有用到Mysql 5的一些新特性比如存储过程触发器之类。 2.定时重启Mysql服务器或Ser(由于本问题可能同样会影响到其它一些需要Mysql支持的服务器程序,所以重启Mysql服务器为好,但需要检测Mysql服务...
类别:数据库 - MySQL    查看:132    更新:2014-05-19

关于MySQL数据库安全的一些建议

当你连接一个MySQL服务器时,你通常应该使用一个口令。口令不以明文在连接上传输。所有其它信息作为能被任何人读懂的文本被传输。如果你担心这个,你可使用压缩协议(MySQL3.22和以上版本)使事情变得更难。甚至为了使一切更安全,你应该安装ssh。用它,你能在一个MySQL服务器与一个MySQL客户之间得到一个加密的tcp/ip连接。   为了使一个MySQL系统安全,强烈要求你考虑下列建议:   对所有MySQL用户使用口令。记住,如果other_user没有口令,任何人能简单地用MySQL -u other_user db_name作为任何其它的人登录。对客户机/服务器应用程序,客户可以指定任何用户名是常见的做法。在你运行它以前,你可以通过...
类别:数据库 - MySQL    查看:125    更新:2014-05-19

Windows系统下MySQL数据库的安全权限及设置

注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改。 文中提及的权限都是在原有权限上附加的权限。 [修改步骤] 1.创建用户 创建一个名为MySQLusr的用户,设置一个随机密码,密码的长度最好 不要少于20位。 2.设置用户的身份 将mysqlusr用户加入Guests组,并去掉其它任何的组。 3.设置磁盘权限 假设MySQL安装在如下目录中 D:hostingsystemmysql 假设MySQL的数据库存放在如下目录中 D:hostingMySQLDB 假设MySQL的服务运行者修改为mysqlusr 目录权限设置如下 D:hostingsystemmysql mysqlusr 读取和运行 列出文件夹...
类别:数据库 - MySQL    查看:129    更新:2014-05-19

ACCESS数据库向MySQL快速迁移小程序

为开发的一个信息管理系统从以前试运行的开发机器上(Windows NT + IIS4.0 + Access)迁移至一台真正的Linux服务器上(Apache1.3.12 + PHP 4.03 + MySQL 3.23.26),其中数据库中的几十个表的内容迁移,开始让我小费了一些周折,从网上也下载了一些MySqL的客户软件或是数据库管理软件,写得较好的软件均有数据迁移功能,但其迁移方式不外乎两种,一种是采用文件引入方式,此种方式在处理数据库中有和分隔符相同的字符时,会产生错误,尤其是在处理ACCESS中的Memo字段,很容易出错,最后导致导出后的数据不是多了就是少了。而另一种支持ODBC直接导入的功能较强,基本可无错误地导入各个表的内容,但很遗憾,这必须是...
类别:数据库 - MySQL    查看:103    更新:2014-05-19

如何实现MySQL数据库的备份与恢复

在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。有时,正是MySQL管理员造成破坏。管理员已经知道表以破坏,用诸如vi或Emacs等编辑器试图直接编辑它们,这对表绝对不是件好事!      备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件(如用cp、cpio或tar等)。每种方法都有其优缺点:      mysqldump与MySQL服务器协同操作。直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数据库,也会发生同样的问题:如果数据库表在文件系统备份过程中被修...
类别:数据库 - MySQL    查看:109    更新:2014-05-19

MySQL数据库安全配置

1、前言   MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。      由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个MySQL的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。      MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全,另外我们还将简单介绍编...
类别:数据库 - MySQL    查看:79    更新:2014-05-19

MySQL数据库SQL语句优化原则

1、使用索引来更快地遍历表。 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引 下,数据在物理上随机存放在数据页上。合理的索引设计要建立在 对各种查询的分析和预测上。一般来说: a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by发生的列,可考 虑建立群集索引; b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引; c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。索引虽有助于提高性能但不是索引越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。  2、在海量查询时...
类别:数据库 - MySQL    查看:109    更新:2014-05-19

MySQL数据库之UPDATE更新语句精解

一、INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。 1. INSERT的一般用法 MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。 INSERT INTO tablename(列名…) VALUES(列值); 而在MySQL中还有另外一种形式。 INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…; 第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语...
类别:数据库 - MySQL    查看:101    更新:2014-05-19

Mysql数据库字符集转换

最近discuz发布了新的版本,免费了,用的人更多了,以前使用其它论坛程序和discuz2.5/3.0的纷纷转换或升级到discuz4.0,可见discuz作为中国人开发的php论坛程序,确实是非常优秀的,在大家欣喜若狂的时候,也遇到了一些问题 看到不少用户反映转换完以后是乱码的情况,出现这种现象的主要原因是这类用户使用的都是mysql4.1以上的版本.下面作一个说明,希望出现这个问题的朋友都能耐心的把这个文档看完!!! MySQL 4.1开始,对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商),MySQL 3、4.0 仍然占主导地位;但 MySQL 4.1 乃至5.0是 MySQL 官方推荐的数据库,已经有主机提供商开始...
类别:数据库 - MySQL    查看:113    更新:2014-05-19

基于MySQL数据库的UTF8中文网站全文检索的实现

现在的互联网上,很多网站都提供了全文搜索功能,浏览者可以通过输入关键字或者是短语来搜索特定的资料。在PHP+MySQL构架的网站中,通常的做法是通过SELECT查询的Like语句来进行搜索,这一办法存在搜索不够精确、以及效率非常低下的缺点。比如对一个有十几万条记录数据表的TEXT字段进行LIKE操作,可能会花费上近10秒钟左右,这对网站的浏览者来说是一个非常糟糕的使用体验。如何在海量的数据中能够快速的进行全文检索呢?MySQL提供了一个全文索引功能,也就是把字段设置上FULLTEXT索引属性,然后通过SELECT的MATCH AGAINST语句进行查找。 我们开发的一个纯英文站点TouchUs - The Globa...
类别:数据库 - MySQL    查看:114    更新:2014-05-19