数据库文件

打造通用 Room 数据库迁移工具

大憨熊 提交于 2019-11-28 08:30:48
在使用 Android Architecture Components 时对于其中的数据库 Room 的升级想到了一个较为通用的迁移方案,使用了一段时间,在此分享一下。 转载请注明出处: https://blog.csdn.net/y1551812297/article/details/86749963 1. 准备 数据库需要升级,通常是因为其中的表或表中的字段、约束等发生了变化,比如增减表、增减字段、重命名等等。通常我们提取新旧数据库的差异,将差异应用到旧数据库中,就完成了升级。如果要做一个通用易用的迁移方案,那么第一步,我们需要能够较为简单的获取这个差异。我们很自然的想到,获取新旧数据库中的表结构,然后做比对就可以了,那么在 Room 中如何获取这个表结构?直接查询数据库可以吗?显然是不行的,旧数据库的表结构可以查到,但是新数据库此时还不存在。那提供接口,在使用时通过接口返回差异信息可以吗?这样的确可以,但是在使用时会非常麻烦,和直接使用 Migration 差别不大,就毫无意义了。 那么有没有一种简单好用的方案?当然有。 我们查看 Room 官方文档中 Migrating Room databases 这一章,其中 Export schemas 这一节中提到了: Upon compilation, Room exports your database’s schema

Django第一天上课笔记

自作多情 提交于 2019-11-28 08:12:39
Django: 注意事项: 1.计算机名称不能含有中文 2.一个Pycharm窗口就是一个工程(项目) 3.项目文件夹不要有中文 PS:Django版本问题: django 1.X 建议使用这个版本 用的最多的是django1.11 django 2.X 安装: pip3 install django == 1.11.11 命令行 创建django项目 django-admin startproject 项目名称 例如: django-admin startproject mysite PS:创建一个应用名的文件夹,里面有一个跟应用名同名的文件夹和一个manage.py的文件 创建应用; django-admin startapp 应用名; django-admin startapp app01; 启动应用: python3 manage.py runserver 也可以 python3 manage.py runserver +ip port 只不过暂时这个IP与端口不需要加 ps:命令行新疆django项目不会自动新建Template文件夹 并且setting配置文件中不会自动写template的路径, 注意: 1.在django中创建的应用必须要到setting中去配置注册,否则不识别 在那个setting 中的INTSALLED_APPS的列表中加入我们新创建的APP名称

Oracle管理表空间和数据文件详解

折月煮酒 提交于 2019-11-28 07:42:08
Oracle管理表空间和数据文件详解 介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括表空间、段、区、块 说明: 数据库由表空间构成 而表空间又是由段构成 而段又是由区构成 而区又是由Oracle块构成 这样的一种结果,可以提高数据库的效率 表空间 介绍: 表空间用于从逻辑上组织数据库的数据 数据库逻辑上是由一个或是多个表空间组成的 表空间的作用: 1、控制数据库占用的磁盘空间 2、dba可以将不同数据类型部署到不同的位置。这样有利于提高i/o性能,同时利于备份和恢复等管理操作 建立表空间 建立表空间是使用create tablespace命令完成的,要注意时,一般情况下,建立表空间是特权用户或是dba来执行的,如果用其它用户来创建表空间,则用户必须要具有create tablespace的系统权限 建立数据表空间 在建立数据库后,为便于管理表,最好建立自己的表空间 create tablespace 表空间名 datafile '数据文件路径' size 数据文件的大小 uniform size 区的大小; create tablespace tangtao001 datafile 'd:\t001.dbf' size 20m

Linux Swap是干嘛的?

落花浮王杯 提交于 2019-11-28 07:30:40
swap是干嘛的? 在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。 SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。 当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。 数据库系统为什么嫌弃swap? 显然,swap机制的初衷是为了缓解物理内存用尽而选择直接粗暴OOM进程的尴尬。但坦白讲,几乎所有数据库对swap都不怎么待见,无论MySQL、Oracal、MongoDB抑或HBase,为什么?这主要和下面两个方面有关: 1. 数据库系统一般都对响应延迟比较敏感,如果使用swap代替内存,数据库服务性能必然不可接受。对于响应延迟极其敏感的系统来讲,延迟太大和服务不可用没有任何区别,比服务不可用更严重的是,swap场景下进程就是不死,这就意味着系统一直不可用……再想想如果不使用swap直接oom,是不是一种更好的选择,这样很多高可用系统直接会主从切换掉

MySQL基础(用的贼鸡儿多)

女生的网名这么多〃 提交于 2019-11-28 07:30:32
整理有点乱,业余也玩玩系统,经常碰见这些玩意,有点烦,老是记不住 MySQL 基础语法 一、连接 MYSQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码、 1、连接到本机上的 MYSQL。 在Linux终端键入命令 mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,终极用户 root 是没有密码的,故直接回车即可进入到 MYSQL 中了,MYSQL 的提示符是:mysql> 2、 连接到远程主机上的 MYSQL。假设远程主机的 IP 为:10.1.9.231,用户名为 root,密码为 123456。则键入以下命令: mysql -h10.1.9.231 -uroot -p123456 (注:u 和 root 可以不用加空格,也可以加空格) help show 显示允许的show 语句 mysql>show grants;用来显示授予用户的安全权限 3、退出 MYSQL 命令: exit (回车) 二、修改密码(Linux环境中) 格式:mysqladmin -u 用户名 -p 旧密码 password 新密码 ( 注:因为开始时 root 没有密码,所以-p 旧密码一项就能省略了。) 1、 将 root 的密码改为 abcdefg。mysqladmin -uroot -p123456 password abcdefg 三

SQL设置自动备份

 ̄綄美尐妖づ 提交于 2019-11-28 07:28:38
前提:在使用下面的备份方式之前需要确保你的Sqlserver Agent服务启动,切设置为自动启动。否则当你服务器重启了但是Agent服务没有启动,那么自动备份任务就不会执行 (一)使用TSql代码自动备份 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。 (1)启动SQL Server Agent服务(确保SQL Server Agent服务以经启动)。 (2)在SSMS的对象资源管理中“SqlServer 管理”节点下面选择作业。然后在其中新建作业 (3)为作业添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。 ? declare @namevarchar(250) set @ name = 'C:\Backup\TestDB1_' + convert ( varchar (50),getdate(),112)+ '.bak' BACKUPDATABASE[TestDB1] TO DISK=@ name

MySQL之备份和还原

二次信任 提交于 2019-11-28 07:11:48
在实际项目中对于数据库的安全是重中之重,为防万一我们需要做好备份工作。备份分为全量备份和增量备份,今天我们就来实践下备份和还原操作。 一、为什么需要备份 在生产环境中数据库可能会遭遇到各种各样的不测从而导致数据丢失, 大致上可以分为以下几种: 硬件故障 软件故障 自然灾害 黑客攻击 误操作 (占比最大) 所以, 为了在数据丢失之后能够有效地恢复数据, 我们就需要定期的备份数据。备份数据的策略需要根据不同的应用场景进行定制, 大致有如下几个参考事项: 备份需要锁定数据库资源多长时间?(是否影响业务) 备份所需要的时长? 备份时服务器的负载情况如何? 数据恢复所需要的时长? 我们可以根据这些参考事项定制符合特定环境中的数据备份策略。 二、备份方式分类 MySQL 的备份方式多种多样,可以根据备份手段、备份的数据范围及备份时数据服务是否在线等来划分。 2.1 备份手段 物理备份 是指备份时直接复制备份数据库的数据文件。 逻辑备份 是指备份时,是使用备份工具从数据库导出数据库的一个或多个备份文件。 2.2 备份的数据范围 全量备份 是指将整个数据库内容做完整的备份。 增量备份 是指仅备份自上一次完全备份或增量备份之后所增加的数据内容。 差异备份 是指仅备份自上一个完全备份之后所增加的内容。 事务日志备份 事务日志是一个单独的文件,它记录数据库的改变

MySQL之Xtrabackup的使用

早过忘川 提交于 2019-11-28 07:11:00
一、Xtrabackup介绍 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle) 、 Percona Server 和 MariaDB ,并且全部开源。 1.1 Xtrabackup 优点 1)备份速度快,物理备份可靠 2)备份过程不会打断正在执行的事务(无需锁表) 3)能够基于压缩等功能节约磁盘空间和流量 4)自动备份校验 5)还原速度快 6)可以流传将备份传输到另外一台机器上 7)在不增加服务器负载的情况备份数据 1.2 Xtrabackup备份原理 备份开始时首先会开启一个后台检测进程,实时检测mysq redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log。 1.3 增量备份介绍: 1)、首先完成一个完全备份,并记录下此时检查点LSN; 2)、然后增量备份时,比较表空间中每个页的LSN是否大于上次备份的LSN,若是则备份该页并记录当前检查点的LSN。 增量备份优点: 1)

SqlServer分区表概述(转载)

蓝咒 提交于 2019-11-28 05:42:54
SqlServer分区表概述(转载) 什么是分区表 一般情况下,我们建立数据库表时,表数据都存放在一个文件里。 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等。但是数据量少的数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开销,除啦性能还会增加实现对象的管理费用和复杂性。 截止到SQL Server 2016,一张表或一个索引最多可以有 15,000 个分区 跟着做,分区如此简单 先跟着做一个分区表(分为11个分区),去除神秘的面纱,然后咱们再逐一击破各个要点要害。 分区是要把一个表数据拆分为若干子集合,也就是把把一个数据文件拆分到多个数据文件中,然而这些文件的存放可以依托一个文件组或这多个文件组,由于多个文件组可以提高数据库的访问并发量,还可以把不同的分区配置到不同的磁盘中提高效率,所以创建时建议分区跟文件组个数相同。 1.创建文件组 可以点击数据库属性在文件组里面添加 T-sql语法: alter database <数据库名> add filegroup <文件组名

程序员面试备战篇:18个经典MySQL面试专题解析,干货分享

蓝咒 提交于 2019-11-28 04:21:22
1.数据库三范式是什么? 第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系统都满足第一范式数据库表中的字段都是单一属性的,不可再分) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。>所以第三范式具有如下特征:>>1. 每一列只有一个值 >>2. 每一行都能区分。>>3. 每一个表都不包含其他表已经包含的非主关键字信息。 2.有哪些数据库优化方面的经验? 用 PreparedStatement, 一般来说比 Statement 性能高:一个 sql发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。 有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。 表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等4. UNION ALL 要比UNION 快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用 UNIONALL。>>UNION 和