让你提前认识软件开发(34):数据库的维护
第2部分 数据库SQL语言 数据库的维护 对于某些大型软件产品,一旦商用,必然会存储很多用户信息,这就对产品所使用的数据库(以下简称 业务数据库 )带来了压力。为了保证业务数据库的平稳运行,需要在日常工作中对数据库做一些基本的维护操作。 业务数据库的
第2部分 数据库SQL语言
数据库的维护
对于某些大型软件产品,一旦商用,必然会存储很多用户信息,这就对产品所使用的数据库(以下简称业务数据库)带来了压力。为了保证业务数据库的平稳运行,需要在日常工作中对数据库做一些基本的维护操作。
业务数据库的维护规则如下:
1. 对业务数据库必须进行定期全量备份
业务数据库的定期备份能在数据库被意外破坏时进行快速恢复,备份策略可以根据数据增量大小采用周计划或月计划。
假如备份数据库db_100,则Oracle、Sybase和SQL Server中的操作方法如下:
(1) Oracle用户模式的备份
exp db_100/db_100 owner=db_100 buffer=8192(或64000)
file=exp_db100.dmp(或磁带设备/dev/rmt0)
tables=
rows=y
compress=n
log= exp_db100.log
参数说明:
owner:将要卸出的用户名列表。
buffer:缓冲区大小。
file:由export创建的输出文件的名字。
tables:将要卸出的表名列表。
rows:指明是否卸出表数据的行数,缺省为“y”。
compress:指明在装入期间是否将表数据压缩到一个区域中。如果在卸出数据时,指定参数compress=y,那么装入时,就会将数据压缩到一个初始区域中。这种选择可以保持初始化区域的原始大小。缺省为“y”。
log:指定一个接收有用信息和错误信息的文件。
(2) Sybase中数据库的备份
dump database db_100 with /home/data/db100.dmp(或磁带设备/dev/rmt0)
(3) SQL Server中数据库的备份
use master
go
exec sp_addumpdevice 'disk', 'dev_db100',
disk ='C:\backup\dev_db100.dat'
go
backup database db_100 to dev_db100
go
2. 对业务数据库定期进行数据清理,清理前必须完成备份操作
对每天记录增长较多的日志表采用备份表的机制,即建立和生产表一样结构的备份表,根据项目的需要决定生产表和备份表保留的时间。
假设1000号业务要处理主日志生产表tb_mainlog,要求是该生产表保留2天的记录,备份表保留90天的记录,筛选日期的字段名为startdatetime,分批提交的间隔为60分钟,有一个存储过程pr_backuptable用于备份,则只需如下调用:
exec pr_backuptable ‘tb_mainlog’,’tb_mainlog_bak’,2,90,’startdatetime’, ‘yyyy.mm.dd hh:mi:ss’,60,’’
参数说明:
参数1:生产表名
参数2:备份表名
参数3:生产表保留的天数
参数4:备份表保留的天数
参数5:筛选日期字段名
参数6:筛选日期字段的格式
参数7:分批提交的间隔(单位:分钟)
参数8:用于进行比较的扩展条件
3. 如果数据库没有设置截断日志(或者不归档模式),需要对数据库日志定期维护
Oracle日志的归档模式的设置一般在安装时就需进行;Sybase数据库的选项“trunc log on chkpt”设为true,或者如果此选项设为false,则需要定期进行数据库的日志截断;SQL Server数据库的选项“autoshrink”设为true。
(1) 设置Oracle数据库的日志为不归档模式
操作步骤为:
1) 关闭数据库
2) 按 startup mount方式启动实例
3) 切换模式
alter database noarchivelog;
alter database open;
(2) Sybase中设置数据库db_100中“trunc log on chkpt”为true
use master
go
sp_dboption db_100,'trunc log on chkpt',true
go
use db_100
go
checkpoint
go
(3) SQL Server中设置数据库db_100中“autoshrink”为true
sp_dboption db_100,'autoshrink',true
4. 对数据库索引进行定期维护
对Sybase,SQL Server数据库中的表中的索引要定期进行update statistics维护。如果索引失效,则重建索引。
例如,要更新tb_userinfo表中所有索引中所有列的统计信息,可采用以下语句:
update index statistics tb_userinfo
5. 定期查看数据库任务的运行结果日志和数据库可用空间最大值
在数据库运行过程中,要经常通过日志来查看相关任务的运行结果是否正常,并查看数据库剩余空间数,如果可用空间已经很小了,则要进行一定的文件清理操作。
6. 对数据库进行大批量的增、删、改操作后建议对表进行一致性检查和索引的重建
在经过大规模的操作的时候,有可能会无意中破坏掉数据表的结构,因此需要在操作完成之后对表进行一致性检查。如果发现表结构出现异常,则需要重建表及相应的索引。
在某些业务软件产品中,数据的维护是一项复杂、繁重而长期的工作,相关维护经验也只有在实际操作过程中才能够累积起来。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

要成功部署和维护PHP网站,需要执行以下步骤:选择Web服务器(如Apache或Nginx)安装PHP创建数据库并连接PHP上传代码到服务器设置域名和DNS监控网站维护步骤包括更新PHP和Web服务器、备份网站、监控错误日志和更新内容。

在Golang中使用数据库回调函数可以实现:在指定数据库操作完成后执行自定义代码。通过单独的函数添加自定义行为,无需编写额外代码。回调函数可用于插入、更新、删除和查询操作。必须使用sql.Exec、sql.QueryRow或sql.Query函数才能使用回调函数。

可以通过使用gjson库或json.Unmarshal函数将JSON数据保存到MySQL数据库中。gjson库提供了方便的方法来解析JSON字段,而json.Unmarshal函数需要一个目标类型指针来解组JSON数据。这两种方法都需要准备SQL语句和执行插入操作来将数据持久化到数据库中。

通过Go标准库database/sql包,可以连接到MySQL、PostgreSQL或SQLite等远程数据库:创建包含数据库连接信息的连接字符串。使用sql.Open()函数打开数据库连接。执行SQL查询和插入操作等数据库操作。使用defer关闭数据库连接以释放资源。

PHP连接数据库指南:MySQL:安装MySQLi扩展,创建连接(servername、username、password、dbname)。PostgreSQL:安装PgSQL扩展,创建连接(host、dbname、user、password)。Oracle:安装OracleOCI8扩展,创建连接(servername、username、password)。实战案例:获取MySQL数据、PostgreSQL查询、OracleOCI8更新记录。
