精华内容
下载资源
问答
  • 1.加载数据库驱动,这个驱动就是数据库的jar包文件,压缩文件,jar包有java连接数据库的字节码文件,也就是.class文件 Class.forName("com.mysql.jdbc.Driver"); 2.连接数据库,驱动管理类,加载连接数据库url,...

    一、连接MySQL数据库

    Java连接数据库的中间件叫做JDBC,连接和操作数据库都是严格定义的,分为2步:

    1.加载数据库驱动,这个驱动就是数据库的jar包文件,压缩文件,jar包有java连接数据库的字节码文件,也就是.class文件

    Class.forName("com.mysql.jdbc.Driver");

    2.连接数据库,驱动管理类,加载连接数据库url,用户名,密码。

    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/njlg2020","root","123456");

    private Connection conn;
    	
    	//连接数据库的实例方法
    	public void connDB() {
    
    		//Class.forName("com.mysql.jdbc.Driver");肯定是检查异常,选择积极处理:try...catch...
    		//Class.forName();静态方法,用类名呼叫的方法一定是静态(static)方法.
    		try 
    		{
    			Class.forName("com.mysql.jdbc.Driver");
    			
    		//jdbc:mysql://固定描述 ,127.0.0.1数据库IP地址,3306端口号,njlg2020数据库名
    conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/njlg2020","root","123456");
    		
    		System.out.println("连上了数据库"+conn);
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    二、操作数据库(增删改查)

    1.添加数据

    //1.添加数据
    	public void addStus(String name,String pwd,String address,String usermail) 
    	{
    		//java里用?表示传入参数。python用%s表示。
    		String sql="insert into t_students(sname,spwd,address,state,usermail) values(?,?,?,default,?)";
    	
    	    
    		try {
    			//PreparedStatement 是把sql语句送到数据库端执行的sql句柄对象
                //PreparedStatement:预执行,躲开sql注入
    			//根据连接的对象 conn来获取
    			//空指针异常就是java中你使用了没有实例化的对象造成的,解决方案:保证这个对象实例化。
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    			
    			//?代表传入参数,要设置?的值,如果传入是int型,那就是setInt();  这里是setString();
    			//?下标是从1开始
    			//参数一定从左往右设置
    			pstmt.setString(1, name);
    			pstmt.setString(2, pwd);
    			pstmt.setString(3, address);
    			pstmt.setString(4, usermail);
    			
    			//执行这条sql语句 ,int表示执行返回的条数。
    			int count=pstmt.executeUpdate();
    			System.out.println("插入-->"+count);
    			
    		} 
    		catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    public static void main(String[] args) {
    		
    		//静态方法不能直接呼叫实例变量,也不能直接呼叫实例方法
    		//connDB();
    		DB db = new DB();
    		db.connDB();
    		db.addStus("张三", "444444", "南理工", "123456789@qq.com");
    
    	}

    2.删除表中的一条数据

    public void delStu(int id)
    	{
    		String sql="delete from t_Students where snum=?";
    		
    		try {
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    			pstmt.setInt(1, id);
    			
    			int count=pstmt.executeUpdate();
    			System.out.println("删除-->"+count);
    			
    		} 
    		catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    public static void main(String[] args) {
    		
    		DB db = new DB();
    		db.connDB();
             db.delStu(6);
    
    	}

    再次查询数据库发现刚刚插入的第六条数据已经被删除。

    3.更新表中信息

    更新某条数据的密码。

    public void updateStuPwd(String newpwd,int id) 
    	{
    		String sql="update t_Students set spwd=? where snum=?";
    		
    		try {
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    			pstmt.setString(1, newpwd);
    			pstmt.setInt(2, id);
    			
    			int count=pstmt.executeUpdate();
    			System.out.println("更新-->"+count);
    			
    		
    		} 
    		catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}

     

    public static void main(String[] args) {
    		
    		DB db = new DB();
    		db.connDB();
    		db.updateStuPwd("222222", 1);
    
    	}

    4.查询表中所有数据

    public void queryAll() 
    	{
    		String sql="select * from t_students";
    		
    		try 
    		{
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    		    
    			//select查询-->executeQuery();
    			
    			//ResultSet 是结果集,相当于元组
    			ResultSet rs=pstmt.executeQuery();
    			
    			//这个结果集一定要去遍历
    			while(rs.next()) //有没有这行数据
    			{   
    				//通过下标去获取数据,从下标1开始
    //				int num=rs.getInt(1);
    //				String name=rs.getString(2);
    //				String pwd=rs.getString(3);
    //				String address=rs.getString(4);
    //				int state=rs.getInt(5);
    //				String mail=rs.getString(6);
    				
    				//通过字段名去获取数据
    				int num=rs.getInt("snum");
    				String name=rs.getString("sname");
    				String pwd=rs.getString("spwd");
    				String address=rs.getString("address");
    				int state=rs.getInt("state");
    				String mail=rs.getString("usermail");
    				
    				System.out.println(num+","+name+","+pwd+","+address+","+state+","+mail);
    			}
    						
    		} 
    		catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    public static void main(String[] args) {
    		
    		DB db = new DB();
    		db.connDB();
    		db.queryAll();
    	}

    展开全文
  • 数据库的安装分为两个部分: 文件解压和复制过程; 安装好之后MySql服务器的配置过程。 2.数据库的安装 2.1 打开下载的mysql安装文件,双击解压缩,运行“mysql-5.5.40-win64.msi”(本人电脑安装的是这个版本,有需要的...
  • 1●数据库中的写放大在数据库的使用过程(包括其它多种应用)中,我们通常会关注一些系统指标,比如CPU的使用率,内存的占用量,或者IO的带宽消耗等等。这些系统指标可以帮助我们评估应用系统资源的占用情况,进而...

    27edb9e80fe1bdc71066ad581c76b220.png

    作者为ScaleFlux系统团队郑宁,王欢、许树堃。

    55e7da07f3ae9a3a695ae86d60ba98d3.png

    1●数据库中的写放大在数据库的使用过程(包括其它多种应用)中,我们通常会关注一些系统指标,比如CPU的使用率,内存的占用量,或者IO的带宽消耗等等。这些系统指标可以帮助我们评估应用对系统资源的占用情况,进而找到应用进一步优化的方向。当前常见的一些数据库,例如MySQL,MariaDB,PostgreSQL,RockDB等等,从设计思路上可以分为图1【1】所示的两大类:基于B/B+树的结构——这种结构通过B/B+树上的节点管理和组织数据库内的记录,当记录有增减时,树里的节点可以进行相应的分裂与合并。

    基于日志结构合并(LSM,log structure merge)树的结构——这种结构将数据库内的记录存储在多个level中,level之间通过相应的合并来适应数据库记录的增减以及维持树的形状。

    cc9b5c28b3bbc14a1d6411de162e2d39.png

    (a) B+树

    04a09b996b4fe647934a454189f1a097.png

    (b)LSM树

    图1. B+树结构和LSM树结构

    通常在数据库运行的时候,其占用的写带宽是远远大于上层所能看到的TPS(transactions per second,每秒事务数)折算后所需要的带宽的。例如,对于记录大小为1KB,TPS为1K的情况,理想情况下写带宽的占用是1KB * 1K/s = 1MB/s,但实际中带宽的占用可能是十数MB/s甚至数十MB/s。这是因为在数据库(包括更底层的软件栈)中,为了保证数据的安全性和一致性,以及设计上的简洁性和高效性,不可避免地引入了写放大问题。写放大带来的最直接的问题就是写入带宽的占用量大幅增长,另一个问题就是SSD寿命的快速消耗。在SSD中,受NAND擦写物理条件的限制,新的数据总是写在新的地方,而NAND总的擦写次数是有限的,这就造成了写入的数据量越多,NAND越容易被写满,进而需要更频繁的擦除和垃圾回收,因此寿命消耗地也越快。写放大问题对于即将量产的QLC(每个NAND cell对应4个比特),甚至是已经提上议程的PLC(每个NAND cell对应5个比特),是非常不利的,因为随着每个NAND cell对应的比特数的增加,NAND的可擦写次数会直线下降。如图2所示,Intel 的D5-P4326 QLC系列,顺序写P/E cycle为1600次左右,随机写只有300余次【2】。

    9a180fb6cec763254887d812f955d9af.png

    图2. D5-P4326 QLC系列可靠性参数

    本文主要讨论透明压缩给数据库中的写放大问题带来的契机。下文将首先针对一些主流数据库分析写放大的主要来源,然后介绍透明压缩的概念和实现,最后评估透明压缩对数据库中写放大的减少效果。

    2●写放大的来源我们选取MySQL(B+树结构)和RocksDB(LSM树结构)作为研究对象。MySQL作为最广泛应用的关系型数据库,在国内有巨大的存量市场;RocksDB作为NoSQL的代表,也在越来越多的场景中被使用。对这两种数据库的研究,不仅可以用来评估透明压缩对不同种类数据库中写放大的影响,还可以帮助我们比较不同的树形结构下数据库中写放大的情况。对于MySQL,其数据的写入主要分为图3所示的四个部分:Binlog——MySQL server端的逻辑日志,负责记录对MySQL数据库进行更改的所有操作。

    Redolog——InnoDB存储引擎的物理日志,负责记录数据修改之后的值(不论事务提交与否)。

    双写缓存(double write buffer)——为防止页面的部分写入问题而引入的“预写”过程。

    数据页——数据库存储记录的主体部分。

    61042e81df654e3839f737baa934bee8.png

    图3. MySQL中写入数据的主要构成

    在这四部分中,只有数据页才是我们真正希望固化下来的存储部分,其它的部分都是为了数据完整性、安全性等考量而引入的,显然同时也引入了写放大问题。即使是数据页本身,也存在着写放大问题。默认配置下,一个MySQL的数据页是16KB,而一条记录可能只有几百个字节;而更新数据页中的一条记录时,我们需要将整个16KB页面重新写一次,其写放大程度可想而知。除了应用产生的数据之外,MySQL一般还运行于文件系统之上。当我们需要同步更新数据的时候,也会涉及到文件系统本身的日志和元数据的更改,这部分写入的数据是应用层不感知的,但是很多时候往往会占据相当一部分的写入流量(例如,更新文件中一个4KB的页面,可能会引起12KB的日志更新),从而带来了进一步的写放大。在RocksDB中,除了WAL引入的写放大之外(WAL也会涉及到文件系统级别的日志和元数据的写入),其内部的写入操作基本都是大块数据的顺序落盘,这部分写入在没有compaction的情况下写放大是比较小的。但是基于LSM树的结构在每个相应level的数据量达到一定程度之后,需要后台的compaction操作对相邻两个level中的部分数据进行归并排序,然后重新写入到较低的level中(如图4所示【3】),这样就引入了另一个层面的写放大问题。随着数据量的增加,compaction的次数也会越多,写放大程度相应的也越大。

    1fab1e099ab5d1401923397fd6ed6a5c.png

    图4. MyRocks中的compaction

    在评估这两种类型的数据库的写放大之前,我们先来看一下透明压缩。

    3●透明压缩提到压缩,我们一般会想到基于软件的CPU压缩,如图5(a)所示。数据通过不同的压缩算法压缩后,数据量会减少,这样在存储的时候所需的存储空间会更小;在数据读取时,先经由CPU解压缩,然后应用再做进一步的处理。不同的压缩算法,往往是在效率和压缩程度之间做取舍:简单的压缩算法,如LZ4和Snappy,压缩解压缩速度快,CPU占用少,但是压缩效果差一些;复杂的压缩算法,如Zlib和Bzip2,压缩解压缩速度慢,CPU占用多,但是压缩效果会好一些。但是,无论压缩算法本身复杂与否,基于CPU的软件压缩,都需要占用系统的CPU资源,而且需要应用集成相应的压缩/解压缩模块。而采用透明压缩,则可以避免CPU的开销,同时做到压缩解压缩对应用完全透明(应用对于数据的压缩和解压缩是无感知的),如图5(b)所示。

    d6379fcccf5e609f78361fb77981631f.png

    图5. (a)基于CPU的软件压缩和(b)透明压缩

    在透明压缩中,当应用将原始数据写入硬盘时,由硬盘本身对数据进行压缩操作,然后将压缩后的数据写入NAND;当应用读取数据时,先从NAND中读入压缩后的数据,经由硬盘解压缩后返还给应用。与软件压缩不同的是,经过透明压缩的数据,在写入NAND时并没有4KB扇区对齐的约束,其所占用的物理空间是按需分配的。这样就需要在透明压缩的驱动中,实现逻辑块地址(LBA)和物理块地址(PBA)的变长映射(在传统驱动中是定长映射的,即一个4KB的LBA对应一个4KB的PBA),如图6所示【4】。

    2870b2ceeb01e094facd1a0b65448855.png

    图6. LBA和PBA的变长映射

    变长映射表的存在给硬盘驱动的设计带来了新的挑战,因为其一方面要实时记录数据压缩前后在逻辑空间和物理空间上的对应关系,另一方面也要提供高效的读写访问机制,以保证硬盘的极致性能。但正是由于驱动中的变长映射,上层应用才可以透明地使用压缩解压缩功能,且无需消耗额外的CPU,还可拥有线性的压缩/解压缩扩展能力。

    4●写放大的评估我们选用ScaleFlux的 CSD 2000(3.2TB)作为评估的目标SSD。CSD 2000是一款实现了透明压缩的SSD,其压缩能力和Gzip Level 6相当,压缩吞吐可达2GB/s以上【5】。同时,我们选用Sysbench 1.1.0作为基准测试,并使用insert,update-non-index和update index三种写入方式评估MySQL 5.7和MyRocks(MySQL 8.0 + RocksDB 6.9)的写放大,以及透明压缩在减少写放大上的效果。测试中使用的CPU为24核@2.3GHzE5-2630,内存为128GB,文件系统为Ext4,线程数为24。在测试时,Sysbench先向数据库中写入200GB数据,在此基础上依次进行insert、update-non-index和update index的操作,并记录每种情况下主机端的数据写入量以及NAND的实际写入数据量(在普通SSD下这两个数据写入量基本相等,而在透明压缩的环境下,NAND的实际写入量往往会小于主机端的写入量)。MySQL的测试中关闭软件压缩,页面大小为16KB,内存池为32GB;而MyRocks中RocksDB采用LZ4软件压缩,总共7个level,其它为默认配置。此外,在测试中每个事务均进行commit和sync操作,以保证数据的安全性和一致性。图7显示了188B的行大小下,MySQL和MyRocks在不同写入场景下的log/journal写入数据量和data的写入数据量(均以正常SSD中的写入量进行了归一化)。从图中可以看出,log/journal的写入量的占比是很可观的,尤其是在MyRocks中,基本都达到了70%以上。一般情况下,这些由log/journal写入的数据,是具有较好的压缩比的,特别是文件系统写入的日志,压缩比往往可以达到5:1甚至更高。因此,经过透明压缩后,写入的数据量会有明显的降低(测试中降低了50%以上)。

    fc9d5d4cea7197f978b667de1c7d8f26.png

    图7. 188B行大小下,MySQL和MyRocks在不同SSD下的归一化数据写入量

    图8显示了188B的行大小下,MySQL和MyRocks在不同场景下的写放大绝对值的对比。可以看出,在更新场景下,写放大还是很严重的,MySQL达到了200以上,而RocksDB也有80左右。而有了透明压缩后,无论是MySQL还是MyRocks,总体的写放大都可以降低一半以上。这就意味着,相同的SSD,在使用透明压缩后其寿命可以延长一倍以上。

    ade44ad9bae3cbb35ca693d4ba42dd32.png

    图8. 188B行大小下,MySQL和MyRocks在不同SSD下的写放大绝对值

    我们也测试了512B的行大小下对应的归一化后的写入量以及写放大绝对值的对比,如图9和图10所示。从图中可以看出,当每一行的大小增大后,log/journal写入量的占比有所降低,但是其绝对比例依然不小(MySQL中25%以上,MyRocks 中达到60%以上);而且行大小增加后,写放大的绝对值(在更新场景下)有所减小,其中MySQL由200左右减小为80左右,而MyRocks由80左右减小为50左右。同188B的情况类似,经过透明压缩后,无论是哪种数据库,总体的写入量/写放大都减少了一半以上。

    084576aad75e4ed5c9c60480a290b0f7.png

    图9. 512B行大小下,MySQL和MyRocks在不同SSD下的归一化数据写入量

    4bc3414639347e899a276ee2ea9064bd.png

    图10. 512B行大小下,MySQL和MyRocks在不同SSD下的写放大绝对值

    5●总结数据库应用大多都存在着严重的写放大,这使得SSD(尤其是刚上市的QLC SSD)的寿命问题成为一个很大的顾虑。透明压缩可以有效地减少写入NAND的数据量,为减小数据库的写放大问题提供了新的思路。

    6●参考文献https://blog.csdn.net/dbanote/article/details/8897599

    https://ark.intel.com/content/www/cn/zh/ark/products/186675/intel-ssd-d5-p4326-series-15-36tb-e1-l-pcie-3-1-x4-3d2-qlc.html

    https://www.jianshu.com/p/5c846e205f5f

    http://www.postgres.cn/v2/news/viewone/1/654

    https://scaleflux.com/product.html

    53dc08767e7b256746d10a6fe4aa3aa2.pngb68829755e16f3ff7240edc61ef832d0.png更多视频信息,包括培训、采访和产品介绍,请关注我们的微信公众号-视频资讯频道

    ScaleFlux视频资讯官网:http://scaleflux.com/videos.htmlScaleFlux优酷频道:https://i.youku.com/scaleflux?spm=a2hzp.8244740.0.0

    展开全文
  • 1.数据库的安装分为两个部分: 文件解压和复制过程; 安装好之后MySql服务器的配置过程。 2.数据库的安装 2.1 打开下载的mysql安装文件,双击解压缩,运行“mysql-5.5.40-win64.msi”(本人电脑安装的是这个...

    数据库的安装


    1.数据库的安装分为两个部分:

    1. 文件解压和复制过程;
    2. 安装好之后对MySql服务器的配置过程。

    2.数据库的安装

    2.1 打开下载的mysql安装文件,双击解压缩,运行“mysql-5.5.40-win64.msi”(本人电脑安装的是这个版本,有需要的可以去文章最下方按照链接下载)

    2.2 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”, 按“next”键继续。

    2.3 点选“Browse”,手动指定安装目录

    2.4 填上安装目录,我的是“d:\Program Files (x86)\MySQL\MySQL Server 5.0”,按“OK”继续。

    2.5 确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装

     

    2.6 正在安装中,请稍候,直到出现下面的界面, 则完成 MYSQL 的安装 

    数据库安装好了还需要对数据库进行配置才能使用 MYSQL 的配置 

    2.7 安装完成了,出现如下界面将进入 mysql 配置向导

     

    2.8 选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我 们选择“Detailed Configuration”,方便熟悉配置过程

    2.9 选择服务器类型,“Developer Machine(开发测试类,mysql 占用很少资源)”、“Server Machine(服务 器类型,mysql 占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql 占 用所有可用资源)” 

    2.10 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务 处理型,较简单,主要做一些监控、记数用,对 MyISAM 数据类型的支持仅限于 non-transactional),按“Next” 继续。 

    2.11  选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500 个左右)”、“Manual Setting(手动设置,自己输一个数)”

     

    2.12 是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 mysql 数据库了,在这个页 面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样 MySQL 就不会允许细小的语法错误。 如果是新手,建议您取消标准模式以减少麻烦。但熟悉 MySQL 以后,尽量使用标准模式,因为它可以降 低有害数据进入数据库的可能性。按“Next”继续 
     

    2.13 就是对 mysql 默认数据库语言编码进行设置(重要),一般选 UTF-8,按 “Next”继续

    2.14  选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin 目录加入到 Windows PATH(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接, “mysql.exe -uusername -ppassword;”就可以了,不用指出 mysql.exe 的完整地址,很方便),我这里全部 打上了勾,Service Name 不变。按“Next”继续

    2.15 询问是否要修改默认 root 用户(超级管理)的密码。“Enable root access from remote machines(是否允 许 root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续

    2.16  确认设置无误,按“Execute”使设置生效,即完成 MYSQL 的安装和配置

    注意:设置完毕,按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装 mysql 的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一步所说, 之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在 安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况 下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

    解决方法:卸载 MySQL,重装 MySQL


    对于卸载MySQL很多人会出现卸载不干净,导致无法正常安装,由于本篇文章过长,所以在此另外写了一篇博客来讲述如何完全卸载MySQL所有文件

    数据库如何干净卸载:https://blog.csdn.net/qq_42404393/article/details/104464009

    MySQL下载:https://download.csdn.net/download/qq_42404393/12187723

    展开全文
  • 目录DM备份还原相关概念和原理备份还原2.0简介备份还原恢复基本概念DM8中根据不同维度,可分为多种备份类型还原基本概念Restore恢复基本概念RecoverDM根据recover过程中是否重做归档,重做归档日志来源可分为三...

    DM备份还原相关概念和原理

    备份还原2.0简介

    在发生故障时,可用来进行数据恢复
    DM支持第三方工具,支持磁带设备
    性能提升(备份2.0与备份1.0相比,他的并行、速率、压缩、还原速度有提升)
    备份的本质是对有效数据的拷贝(备份2.0只针对包含有效数据的数据页(数据块?)进行备份)
    还原的本质是将备份集数据页写入目标库的过程

    备份还原恢复基本概念

    备份集:一个备份集对应一次完整备份,为一个目录,有一个或多个备份片和一个元数据文件组成
    备份片:后缀为.bak,是用来存储备份数据的文件,备份时,源库的数据文件内容或者归档日志内容经过处理后,都会存放到这些备份片文件中
    元数据:后缀为.meta,用来存储备份信息,包括:备份集自身相关信息、备份源库的建库参数信息、备份集中备份数据文件信息、备份集中备份片信息

    备份指的是,将待备份的数据经过处理(加密、压缩等)后,写到备份片文件中,并将相关备份信息写到元数据文件中的过程

    DM8中根据不同维度,可分为多种备份类型

    1 备份组织形式:物理备份、逻辑备份
    2 备份时,数据库是否运行:联机备份(热备)、脱机备份(冷备)
    3 备份粒度大小:库备份、表空间备份、归档备份、表备份
    归档备份支持联机和脱机;归档备份会把收集到的归档文件备份到备份集中的每一个备份片,必要的时候可以使用归档备份及还原归档。
    4 备份数据的一致性:一致性备份、非一致性备份
    5 备份数据的完整性:完全备份、增量备份

    还原基本概念Restore

    把备份集中的备份数据经过处理后,写回到还原目标库中对应的数据文件的过程。
    还原的数据(restore)通常处于非一致性状态,需要执行恢复(recover)操作,是目标数据库数据一致。
    DM根据不同维度,也可分为多种还原类型
    1 还原组织形式:物理还原、逻辑还原
    2 还原时,数据库是否运行:联机还原、脱机还原
    3 还原粒度大小:库还原、表空间还原、归档还原、表还原
    4 还原数据的完整性:完全备份还原、增量备份还原

    恢复基本概念Recover

    恢复是重做本地归档日志或重做备份集中备份的归档日志的过程
    未经过恢复的数据库是不允许启动的
    表空间和表还原均为联机执行,不需要在执行recover,recover指的是数据库恢

    DM根据recover过程中是否重做归档,重做的归档日志的来源可分为三类

    1 更新DB_MAGIC:该参数记录数据库的变化,当数据库经过备份还原并恢复后,DM_MAGIC就会发生改变(SELECT DM_MAGIC FROM V$RLOG;);
    在不需要重做归档日志恢复数据的情况下,可以直接更新DM_MAGIC来完成最后的恢复工作
    2 从备份集恢复:利用备份集中的备份日志恢复的过程
    3 从归档恢复:利用重做本地的归档日志恢复数据的过程;
    可以利用归档,进行最大恢复(恢复到最新状态),指定时间点恢复,指定LSN(Log Sequence Number)恢复

    备份还原恢复基本原理

    备份级别

    1 库级和表空间级
    他们都属于物理备份、都要求配置归档模式、都可以进行完全备份和增量备份、备份对象均为数据文件与归档文日志
    2 归档备份
    将备份路径下,对包含了元数据信息和redo日志的归档文件进行备份
    3 表级备份
    数据备份和元信息备份(表级元信息包括:建表语句、重建约束语句、重建索引语句等)
    表级备份均为一致性完全备份,无需配置归档
    并行备份
    库级、归档备份、表空间级都支持并行备份
    通过关键字PARALLEL指定是否执行并行备份及并行数。默认为4,指定值为0或1则按照非并行处理
    并行备份以数据文件为单位,实际可使用的最大并行数就是被备份的数据文件的个数
    增量备份是否并行及其并行数取决于其基备份
    并行备份出的备份物理文件包括:一个主备份集目录和几个子备份集目录,结构如图所示
    物理目录结构

    还原级别

    1 库还原、表空间还原
    库还原前备条件:需要准备目标库,目标库与源库参数需要一致(通过DMRAMAN的show查看备份信息)
    表空间还原原则上不允许跨库还原,只能应用于原库。
    2 归档还原
    读取元数据文件,获取备份信息,校验备份集是否有效;
    从用户指定的备份集收集归档文件,并根据用户指定的过滤条件(时间点、LSN恢复等),筛选出还原需要用到的归档;
    在指定的归档目录创建归档文件,如果目标归档文件已存在,默认采用认为该归档完好,生成一条日志记录,不在还原的策略,也可根据OVERWRITE参数调整策略(直接终止还原并报错、强制删除归档后重新还原同名归档)
    从备份集拷贝redo日志,写入目标归档日志文件
    3 表还原
    表结构还原(目标表存在则清除数据、二级索引和约束,表不存在则利用备份集中记录的建表语句重建)
    表数据还原
    重建索引约束
    恢复recover分类
    备份集中备份了归档日志:读出备份集中的归档日志并生成到一个临时归档文件中,然后根据临时归档文件进行重做
    备份集中妹有备份归档日志:根据备份集START_LSN与END_LSN参数,重做本地归档
    START_LSN和END_LSN之间无日志(START_LSN=END_LSN+1)时:只更新DB_MAGIC即可
    并行还原
    对应并行备份集的还原,非并行备份集不能执行并行还原
    并行数与目标并行备份集的并行数一致
    并行备份及支持非并行还原(关键字NOT PARALLEL)

    展开全文
  • SQL SERVER 的压缩功能

    2020-05-22 14:10:44
    压缩分为行(ROW)压缩和页(PAGE)压缩,页压缩的压缩比率更高一些,正常来说一般数据库可以实现50%以上的压缩比率。 性能影响 压缩后磁盘的压力会减少,但是会增加CPU的压力,性能的影响需要看机器的具体配置,在...
  • 第2章详细讲解了在数据库的设计阶段如何去考虑数据库的性能问题;第3~6章从物理数据库部署、数据库访问设置、硬件资源设定、存储空间和内存资源的使用、实例配置与缓存优化等多方面讲解了数据库系统在部署阶段的性能...
  • 备份主要分为应用备份和数据库备份 一、首先对原来应用进行...二、然后我们要对数据库进行备份,这里我们要用到exp命令(exp是数据导出命令),在cmd命令窗口下运行一下命令 exp username/userpwd@ORCL D:\a.dmp
  • 数据库备份与恢复

    2012-04-14 13:20:13
    数据备份与恢复 ... 逻辑备份是指备份对数据库进行操作改变数据库结构语句,如insert create 等,以文本形式存储,比较占用磁盘空间,不过可对其进行压缩存放。 物理备份是指对数据库数据...
  • 数据库系统内部体系分为三级模式,内模式,模式和外模式。 模式 先来介绍模式,在数据库中有表概念,表头信息如学生表姓名,性别叫做“型”,也就是类型,每一个学生叫做实例,也是“值”。这个型就叫做模式,...
  • 1.数据库的安装  安装过程分为两个部分  1)文件解压和复制过程,默认的安装目录:C:\Program Files\MySQL\MySQL Server 5.5\  2)安装好以后必须MySQL服务器进行配置  在mysql中管理员的名字:root  2....
  •  《循序渐进oracle:数据库管理、优化与备份恢复》从基础知识入手,详细讨论了oracle数据库的创建、从oem到grid control、oracle的字符集、用户的创建与管理、表空间和数据文件、自动存储管理(asm)、临时表空间和...
  • 在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • 概述 数据压缩是一个把输入数据集按照一定的算法变换成...数据库系统中用得比较多的压缩算法可以分为两大类:基于块的压缩、基于值的压缩。前者更为常见一些,在 OLTP 以及 OLAP 系统中都会用到,例如 InnoDB、TokuD...
  • GNU Linux操作系统的哲学...其中非实时的文件查找是基于数据库的,而实时查找则是基于查找条件文件系统上的所有文件进行搜索、匹配,且是穷尽查找。 非实时查找的代表命令是locate;实时查找的代表是find命令。...
  • 前言:GNU Linux操作系统的哲学思想之一即是一切皆是文件,因此使用必要的...其中非实时的文件查找是基于数据库的,而实时查找则是基于查找条件文件系统上的所有文件进行搜索、匹配,且是穷尽查找。非实时查找的...
  • 版本分为:1、事务版本;2、历史版本。 事务版本和历史版本可以有多个,事务版本里子版本经过冲突检查和协调最终提交到default...压缩Compress操作:用户应该定期提交版本到Default版本,对数据库进行Compress操作,
  • 在网站优化过程中,我们分为两大部分: 1:页面前端优化,这里包括js脚本合并及压缩,js事件后绑定,图片与应用程序分离等等,本篇文章并不讲前端优化。 2:服务端优化。后台程序在执行时,一般比较耗时就是些...
  • Hyper是一个单机的数据库,不过现在有人把它分布式化了,性能还很好。 ...Hyper将数据分为了冷数据和热数据,冷数据就是经常读不常写的...为了能够支持热数据的快速访问,热的数据如果要压缩必须是轻量级的压缩。 在hype
  • 算法人脸图像增强分为两步:动态范围压缩和细节增强。算法首先利用对数变换和非线性变换,增强图像阴暗区域信息,同时高光区域进行有效地抑制,然后利用反锐化掩模滤波图像细节进行增强。将各种增强算法...
  • NoSQL分类

    2012-06-28 09:45:00
    NoSQL仅仅是一个概念,NoSQL数据库根据数据存储模型和特点分为很多种类。 类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据...
  • FRFT幅度随阶次变换呈现压缩性,而SPCA提取其主要信息,且分为主要信息域和次要信息域,融合两者互补信息组成混合幅度特征,然后融合混合幅度特征、实部特征和虚部特征,最后融合不同阶次下FRFT域特征。...
  • 项目完整可用,配合压缩包内数据库可直接运行使用。 eclipse+mysql5.7+jdk1.8 功能:推荐引擎利用特殊信息过滤(IF,Information Filtering)技术,将不同内容(例如电影、音乐、书籍、新闻、图片、网页等)推荐...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

对数据库的压缩分为