数据库备份主要包括哪三种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库备份主要包括哪三种方式相关的知识,希望对你有一定的参考价值。
参考技术A全量备份是指对某一时间点上的所有数据进行全量备份,包括系统和所有数据。这种备份方式每次都需要对系统和所有数据进行一次全量备份。这种备份方式最大的好处就是在恢复丢失数据时,只需要对一个完整的备份进行操作就能够恢复丢失数据,大大加快了系统或数据恢复的时间。
增量备份即在第一次全量备份的基础上,分别记录每次的变化。由于增量备份在备份前会判断数据是否发生变化,并仅记录每次变化情况,所以相较于其他两种备份方式它最大的好处在于其所需存储空间最少的(相同的变化情况下),备份速度最快的。当然在数据还原上来说,它的恢复时间是最长的,效率较低。恢复数据时,需要在第一次完备的基础上,整合每次的一个变化情况。
差异备份就是在第一次全量备份的基础上,记录最新数据较第一次全量备份的差异。简单来说,差异备份就是一个积累变化的过程。因此,恢复系统或者数据时,只需要先恢复全量备份,然后恢复最后一次的差异备份即可完成。所以差异备份占用的储存空间和所需恢复时间介于全量备份和增量备份之间。
常说的java加锁有哪三种方法
1、synchronized方式(重量级锁)
加锁方式:synchronized(object)传入对象,不同对象代表不同锁,可以在线程外部新建对象。
public class SellCinemaTicketThread implements Runnable
static int num = 100;
Object object = new Object();
@Override
public void run()
while (true)
synchronized (object)
if (num > 0)
System.out.println(Thread.currentThread().getName() + "买票啦---" + num);
num--;
也可以作为方法的修饰传入
public class SellCinemaTicketThread1 implements Runnable
static int num = 100;
@Override
public void run()
sell();
private synchronized void sell()
while (true)
if (num > 0)
System.out.println(Thread.currentThread().getName() + "买票啦---" + num);
num--;
2、Lock(比synchronized要轻量级)
- 新建锁对象Lock l = new ReentrantLock();
- 加锁 l.lock()
- 解锁 l.unlock()
public class TestLockSellTicket implements Runnable
static int num = 100;
Lock l = new ReentrantLock();
@Override
public void run()
while (true)
l.lock();
if (num > 0)
try
Thread.sleep(100);
System.out.println("买票啦---" + num);
num--;
catch (InterruptedException e)
e.printStackTrace();
finally
l.unlock();
3、wait() notify() notifyAll()
/*
wait() notify() notifyAll() 是Object上的方法,只有Object是对象监视器时候才能调用此方法
notify() 唤醒同一个对象监视器上的线程
wait(Long timeout) 传入数值,表示超过某个时间还没有被唤醒则自动唤醒
wait和sleep区别:
sleep() 可以在同步中和同步外使用,线程遇到sleep不释放锁,时间到了继续向下执行
wait() 只能在同步中使用,由对象监视器调用, 线程进入wait状态时释放掉锁
*/
public class TestWaitAndNotify
public static void main(String[] args)
Object obj = new Object();
new Thread(new Runnable()
@Override
public void run()
synchronized (obj)
System.out.println("开始等待。。。。");
try
obj.wait();
catch (InterruptedException e)
e.printStackTrace();
System.out.println("等待结束。。。。");
).start();
new Thread(new Runnable()
@Override
public void run()
synchronized (obj)
// 休眠两秒再唤醒线程
try
Thread.sleep(2000);
catch (InterruptedException e)
e.printStackTrace();
obj.notify();
).start();
买票加锁
SellCinemaTicketThread1类
public class SellCinemaTicketThread1 implements Runnable
static int num = 100;
@Override
public void run()
sell();
private synchronized void sell()
while (true)
if (num > 0)
System.out.println(Thread.currentThread().getName() + "买票啦---" + num);
num--;
TestSellCinemaTicket 买票类 多个线程同时卖票
/*
保持同步:
代码块加锁 synchronized (任意对象即对象锁) 需要同步的对象
方法加锁 在方法返回值前加synchronized
private synchronized void sell() 同步代码
*/
public class TestSellCinemaTicket
public static void main(String[] args)
// Runnable r = new SellCinemaTicketThread();
Runnable r = new SellCinemaTicketThread1();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
t1.start();
t2.start();
t3.start();
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于数据库备份主要包括哪三种方式的主要内容,如果未能解决你的问题,请参考以下文章