使用脚本输出excel文件的方法分享,MySQL高可用之PXC安装部署

 

数据库基本概念:区、页、行

:SQL
Server中管理空间的基本单位。一个区大小为64KB,是八个物理上连续的页。SQL
Server中每MB有16个区。一旦一个区被存储满,SQL
Server将分配一个区给下一条数据。
:SQL
Server中存储数据的基本单位,是区的分配单元。一个页大小为8KB。是SQL
Server
每次读取和写入数据的最小单位。页的类型有数据页,索引页,文本页等等。
:行存储于页中,一行一般最多占满一页,也就是8KB,但也有些VARCHAR(MAX),TEXT,IMAGE类型的字段,可以跨越多页存储,一行最大2GB。

转自:

Preface

收缩数据库

数据库中每个文件都可以通过删除未使用的页的方法来收缩。数据文件和事务日志文件都可以收缩。数据库收缩分为手动收缩和通过数据库设置自动收缩。


 

设置数据库自动收缩

数据库引擎会定期检查每个数据库的空间使用情况,自动收缩有可用空间的数据库。

ALTER DATABASE test
SET AUTO_SHRINK ON;

    Today,I’m gonna implement a
PXC,Let’s see the procedure.

设置关闭自动收缩
ALTER DATABASE test
SET AUTO_SHRINK OFF;

摘要:

 

数据库手动收缩

DBCC SHRINKDATABASE(test,10);
GO
或者使用如下命令:

USE test
DBCC SHRINKFILE('test',0,TRUNCATEONLY);

上面命令收缩了test数据库的test.mdf文件,设置目标文件大小为0MB,TRUNCATEONLY参数表示将文件所有可用空间全部释放给操作系统,但不在文件内部执行页迁移。

下文将分享使用sql脚本输出excel的方法
 
此脚本可以应用于 表或视图生成excel的方法,
若需使用sql脚本输出excel数据,我们可将sql脚本生成视图或临时表,

Framework

收缩事务日志文件

若要运行SHRINKFILE命令收缩文件,首先要将数据库恢复模式设置成SIMPLE来截断该文件。

USE test
GO
ALTER DATABASE test SET RECOVERY SIMPLE;--将test数据库恢复模式设置成SIMPLE
GO
DBCC SHRINKFILE('test_log',1,TRUNCATEONLY);
--将test_log.ldf文件收缩到MB,且不允许文件内部页迁移
GO
ALTER DATABASE test SET RECOVERY FULL;
--将test数据库恢复模式设置回FULL
GO

然后再输出excel

输出excel语法简介:
exec
master..xp_cmdshell ‘bcp
[数据库名称].[架构名].[表名] out [excel存放位置全路径] -c -q
-S”服务器Ip” -U “sql用户名” -P “sql密码”‘

---例1:
exec 
master..xp_cmdshell 'bcp test.dbo.tableName out d:\test.xls -c -q -S"." -U "sa" -P "erp"'
---将数据库test中tablName输出值d盘test.xls文件
---服务器地址.
---sql账户sa
---sql密码erp
--------------------------------------------
例2: 根据动态文件名输出excel的方法
declare @name varchar(30) ---动态文件名
set @name ='d:\test123.xlsx'

exec 
('master..xp_cmdshell ''bcp test.dbo.tableName out '+@name+' -c -q -S"." -U "sa" -P "erp"''') ---拼接操作语句,并采用exec执行

注意事项:

*1 使用脚本输出的excel ,无表头
2
可动态文件名和动态sa账户密码生成相关信息
3
如果输出sql脚本的数据至excel,我们需先将sql脚本生成的数据缓存至表中,然后输出表数据至excel

xp_cmdshell相关权限需打开
*

 

截断数据文件

必须先用SELECT语句获取数据文件的file_id

USE test
GO
SELECT FILE_ID,name FROM sys.database_files;--获取test数据库中数据文件和日志文件的file_id
GO
DBCC SHRINKFILE(1,TRUNCATEONLY);--截断并收缩该file_id对应的文件
GO
Hostname IP Port OS Version MySQL Version Xtrabackup version
zlm2 192.168.1.101 3308 CentOS 7.0 PXC 5.7.22 2.4.12 Linux (x86_64)
zlm3 192.168.1.102 3308 CentOS 7.0 PXC 5.7.22 2.4.12 Linux (x86_64)
zlm4 192.168.1.103 3308 CentOS 7.0 PXC 5.7.22 2.4.12 Linux (x86_64)
清空文件
ALTER DATABASE test--创建一个空数据文件test1data.ndf放在E盘
ADD FILE(
NAME='test1data',
FILENAME='E:\test1data.ndf',
SIZE=5MB
);
GO

DBCC SHRINKFILE('test1data',EMPTYFILE);--利用SHRINKFILE语句清空该数据文件
GO

ALTER DATABASE test--删除该文件
REMOVE FILE test1data;
GO

 

复制和移动数据库

SQL Server 2008使用2中方式来进行复制和移动数据库操作。

Procedure

分离和附加数据库

此方法是复制和移动数据库的最快方式。要求用户必须是源和目标服务器sysadmin固定服务器角色的成员,源数据库脱机,分离数据库前要将数据库设置成单用户模式。

 

SQL管理对象

此方法稍慢,但不要求数据库脱机,要求用户是源数据库所有者且有CREATE
DATABASE的权限。右键数据库—任务—复制数据库。

    The official website of
PXC:

优化数据库

优化数据库就是提高数据库的稳定性,运行速度和执行能力。主要从3个方面对数据库进行优化。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图