让你提前认识软件开发(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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP Web サイトを正常に展開して維持するには、次の手順を実行する必要があります。 Web サーバー (Apache や Nginx など) を選択する PHP をインストールする データベースを作成して PHP に接続する コードをサーバーにアップロードする ドメイン名と DNS を設定する Web サイトのメンテナンスを監視する手順には、PHP および Web サーバーの更新、Web サイトのバックアップ、エラー ログの監視、コンテンツの更新が含まれます。

JSON データは、gjson ライブラリまたは json.Unmarshal 関数を使用して MySQL データベースに保存できます。 gjson ライブラリは、JSON フィールドを解析するための便利なメソッドを提供します。json.Unmarshal 関数には、JSON データをアンマーシャリングするためのターゲット型ポインターが必要です。どちらの方法でも、SQL ステートメントを準備し、データをデータベースに永続化するために挿入操作を実行する必要があります。

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

Go 標準ライブラリのデータベース/SQL パッケージを通じて、MySQL、PostgreSQL、SQLite などのリモート データベースに接続できます。データベース接続情報を含む接続文字列を作成します。 sql.Open() 関数を使用してデータベース接続を開きます。 SQL クエリや挿入操作などのデータベース操作を実行します。 defer を使用してデータベース接続を閉じ、リソースを解放します。
