当前位置:首页 » 数据仓库 » 数据库还原速度很慢
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库还原速度很慢

发布时间: 2022-07-08 06:06:09

❶ oracle还原数据库长时间不动

一般是网络不好,更换网络再试一下。
根据oracle数据库的特点和提供的工具,还原数据主要方法有以下几种方法。
1、利用逻辑备份使用import工具丢失数据的表;2、利用物理备份来通过还原数据文件并进行不完全恢复;3、利用dbms_logmnr包从redo log文件中恢复;4、利用flashback特性恢复数据。

❷ 用 Navicat 还原 Mysql 数据库奇慢

mysql -uuser -ppassword dbname < c:\\dbname.sql 这样试一下

❸ 数据库还原缓慢

你先把原来的那个数据库分离掉,把MDF和LDF文件移到其它文件夹,然后创建个新的同名空数据库,然后再强制还原,另外还原时请不要退出远程登录,要等完成后才退出。

❹ mysql还原数据库 怎么最快

经过分析发现,还源速度慢的主要原因是因为这类工具在执行 SQL 文件的时候,总是把每一条SQL以一个事务的方式去执行。所以面对几千万的数据,就需要执行几千万次的 SQL 语句,效率更加可想而知。于是想到了 OBDB2DB 这一个数据库转换工具,通过这一个工具把 MySQL 的数据导出为本地 SQLite 数据库,带回来后再将 SQLite 转换为 MySQL 数据库。由于 OBDB2DB 在进行数据转换时采用了批量处理的方式,所以转换速度相比原来的方式大大提高。

❺ SQL Server如何提高数据库还原的速度

影响数据库还原速度的因素和影响数据库备份速度的因素相同。除此之外,假如你使用SQL Server 2005的话,你还可以启动另外一个优化任务来还原当前不存在的数据库,运行环境为Windows XP,Windows 2003 Server 或更新版本。
Perform Volume Maintenance Tasks
当你还原一个新的完整数据库是,SQL Server读备份文件头,然后创建原始数据库中数据和日志文件需要的磁盘空间。假如SQL Server服务启动帐户没有“Perform Volume Maintenance Tasks”权限的话,数据和日志文件就需要被初始化为0,也就是说,SQL Server先创建这些文件,然后用0来填充它们。对于一个大数据库来说,这将花费很多时间。我记得使用SQL Server 2000从磁带上还原一个320GB的数据库时,总是奇怪为什么总是有30分钟的时间,还原进程一点称进展都没有。
然后,假如SQL Server服务启动帐户有“Perform Volume Maintenance Tasks”权限的话,它就会根据大小来创建数据文件,跳过“填充0”这个阶段。
下图使用secpol.msc来显示权限

你可以设想一下它会节省你多少还原大型数据库的时间。注意,事务日志文件仍然需要“填充0”,仅仅是数据文件可以跳过这一步。
注意:当然使用新权限时,要启动SQL Server服务来使之生效
下面是一个还原20GB数据和5GB事务日志所消耗时间的对照表
还原消耗时间
未使用”Perform Volume Maintenance Tasks” 5:05
使用“Perform Volume Maintenance Tasks” 1:01
消耗1:01时间是因为SQL Server仍然要把事务日志文件进行“填充0”操作,未使用”Perform Volume Maintenance Tasks”的情况下,SQL Server需要把数据文件和事务日志都进行“填充0”的操作,所以还原时间显示变长了。
你可以用下面这个脚本来快速确定当前是否使用了PVMT(Perform Volume Maintenance Tasks)。
CREATE DATABASE test_InstantInit ON
PRIMARY (name = 'test_InstantInit', filename = 'k:/temp/test_InstantInit.mdf', size = 1GB)
LOG ON (name = 'test_InstantInit_log', filename = 'k:/temp/test_InstantInit.ldf', size = 1MB)
DROP DATABASE test_InstantInit
整个脚本如果在几秒内完成就证明使用了PVMT。
这里还有一点需要说明的地方。当SQL Server跳过“填充0”阶段空间时,如果数据文件所占用的空间里面包括以前的数据,那么使用DBCC PAGE命令或是其他16进制编辑器就可以看到未被数据页占据的空间内容。这就是说,如果一个包括敏感重要内容的数据虽然已经被删除了,但是如果新数据库占用了这片空间,那么敏感数据就有可能被部分泄露出来。
注意:当PVMT处于活动状态时,那么新建数据库,新建数据文件,数据文件增长等情况都会使用它。详情请看Database File Initialization [SQL2005]
综上所述,那么我从备份文件还原一个数据库之前是否要删除这个数据库呢?
下面的表格显示了还原同一个数据不同操作的效果:
还原时间
还原1GB数据库 0:40
还原2GB数据库 1:08
还原1GB数据库,当前有个同名的2GB数据库存在 0:29
还原2GB数据库,当前有个同名的1GB数据库存在 0:56
结果显示,假如你执行一个完整数据库恢复且覆盖已经存在的同名数据库,那么恢复速度会快于直接恢复(表中行1与行3,或行2与行4的对比)。这看起来好像是因为没有对已经存在的数据文件执行“填充0”操作而节省了时间。不过这也仅仅局限于你恢复的数据库有同名的文件。如果你使用MOVE选项来重定位数据库文件,那么无论你事先是否已经删除数据库,这都不再有什么区别了。
还原状态同样影响还原速度
另外一个影响还原速度的因素就是你所选择的还原后的数据库的状态,前提是recovery没有被选中。通常出于为以后升级做准备的需求,当你选择不完全恢复数据库时,有两个选项可以使用NORECOVERY或是STANDBY。NORECOVERY使数据库处于“恢复中”模式,允许你进行后续的升级,而且此时数据库是不可读状态。STANDBY也使数据库处于“恢复中”状态,允许你进行后续升级,但是此时数据库可读。
当你使用STANDBY选项时,你要为回滚文件提供一个名字。这个文件包括从未提示的事务中回滚操作结果。你的未提交事务越多,这个文件越大,那么随后还原时间越长。
下面的例子中有4个事务日志,每个大约131MB左右。除了第三个事务日志外,所有的备份都仅包括提交的事务,第三个事务日志包括32MB未提交事务,结果如下图:
使用NORECOVERY选项还原事务日志:

使用STANDBY选项还原事务日志:

总体来说,与NORECOVERY相比使用STANDBY还原事务日志会慢一些。因为当有未提交的事务时,SQL Server会花费额外的时间来创建回滚文件(undo file)。
还有说明的是,如果你要还原多个事务日志而且你想让数据库处于只读模式,那么你应该先使用NORECOVERY选项来还原事务日志,然后当所有日志都恢复完成后,你可以把数据库切换到STANDBY的只读模式,如下:
RESTORE DATABASE mydb WITH STANDBY = 'g:/data/mydb/mydb_und.dat'
使用这个方法,你仅仅创建了回滚文件一次,避免了还原多个事务日志时创建多次回滚文件的过程,加速了恢复过程。

❻ 我备份了个数据库文件book.sql,文件有5.5G,但我想恢复的时候,执行速度速度太慢,求快速的执行方法。

只能换配置高的电脑了,强CPU,最好固态硬盘,还原速度自然会很快。

❼ 如何有效地提高 MySQL 的备份和恢复速度

你好,
一 加速备份
1、 加了single-transaction参数 备份时 需要先flush table with read lock 这个过程中会有一个锁表的过程,如果有事务或语句正在执行,没有结束,那么备份进程会一直等待,并且阻塞别的事务,那么也会影响业务。所以要先确认备份的时候没有大的事务在运行。具体 single-transaction的加锁可以参考 我的博客:mysqlmp备份时加single-transaction会不会加锁2 、mysqlmp是单进程的,没有办法并行,但现在机器的瓶颈多是出现在IO方面,可以使用更了的IO设备加快速度3 、mysqlmp时如果空间够的话,不要边压缩边备份二 加速恢复
1 关闭binlog:不写入Binlog会大大的加快数据导入的速度2 innodb_flush_log_at_trx_commit=0
3 更好的配置
建议:
如果非要使用逻辑备份,可以考虑mysqlmper, mysqlpump(5.7)这两个工具去备份,这两个在备份的时候支持并行操作,mysqlmper还可以对单表进行恢复,在只需要恢复单表的情况下,恢复速度会大大加快使用物理备份 xtrabackup (open source),MEB(oracle提供,收费): 他们的备份原理是基于mysql crash recover, 备份速度 是和逻辑备份的相差不太大。但是恢复速度却有很大的提升。
逻辑备份 备出来的是sql语句文件,恢复时需要一条一条的执行sql,所以恢复很慢。
而物理备份和还原的速度 相当于直接文件,所以恢复的时候性能有很大的提升并且这两个软件还支持并行,效果更好。
逻辑备份最大的优点是 备份好的文件经压缩后占用空间较小,最大缺点恢复太慢物理备份可以很快的恢复,但是备份好的文件压缩后占用空间比逻辑备份要大

❽ mysql数据库突然变慢 数据库变慢是什么原因

MySQL 在崩溃恢复时,会遍历打开所有 ibd 文件的 header page 验证数据字典的准确性,如果 MySQL 中包含了大量表,这个校验过程就会比较耗时。 MySQL 下崩溃恢复确实和表数量有关,表总数越大,崩溃恢复时间越长。另外磁盘 IOPS 也会影响崩溃恢复时间,像这里开发库的 HDD IOPS 较低,因此面对大量的表空间,校验速度就非常缓慢。另外一个发现,MySQL 8 下正常启用时居然也会进行表空间校验,而故障恢复时则会额外再进行一次表空间校验,等于校验了 2 遍。不过 MySQL 8.0 里多了一个特性,即表数量超过 5W 时,会启用多线程扫描,加快表空间校验过程。
如何跳过校验MySQL 5.7 下有方法可以跳过崩溃恢复时的表空间校验过程嘛?查阅了资料,方法主要有两种:
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那么 validate = false,即可以跳过表空间校验。实际测试的时候设置 innodb_force_recovery =1,也就是强制恢复跳过坏页,就可以跳过校验,然后重启就是正常启动了。通过这种临时方式可以避免崩溃恢复后非常耗时的表空间校验过程,快速启动 MySQL,个人目前暂时未发现有什么隐患。2. 使用共享表空间替代独立表空间这样就不需要打开 N 个 ibd 文件了,只需要打开一个 ibdata 文件即可,大大节省了校验时间。自从听了姜老师讲过使用共享表空间替代独立表空间解决 drop 大表时性能抖动的原理后,感觉共享表空间在很多业务环境下,反而更有优势。
临时冒出另外一种解决想法,即用 GDB 调试崩溃恢复,通过临时修改 validate 变量值让 MySQL 跳过表空间验证过程,然后让 MySQL 正常关闭,重新启动就可以正常启动了。但是实际测试发现,如果以 debug 模式运行,确实可以临时修改 validate 变量,跳过表空间验证过程,但是 debug 模式下代码运行效率大打折扣,反而耗时更长。而以非 debug 模式运行,则无法修改 validate 变量,想法破灭。

❾ 求助,用 Navicat 还原 Mysql 数据库奇慢

二、打开Navicat---连接---Mysql 三、填写数据库连接信息 四、导出数据库文件双击打开创建的连接---选择您的数据库---右键点击---选择"转储SQL文件",即可将数据库导入成.sql文件五、 导入数据库文件 1)双击打开创建的连接---选择您的数据库---右键点击---选择"运行SQL文件"2)选择您的数据库备份文件以及备份文件的编码,默认选择的编码为65001 (UTF-8)。如果导入失败,可以删除失败的表,尝试选择936( Simplified Chinese GBK ) 再次导入 3)如果进度条显示完成,并且没有提示错误,则成功导入。