数据库

Oracle事务

孤街浪徒 提交于 2020-03-15 11:52:17
目录 一、事务的基本概念 二、事务的特征 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、设置事物属性 2、数据异常 3、选择隔离层 4、保存点 四、版权声明 一、事务的基本概念 在数据库中事务是工作的逻辑任务,一个事务是由一个或一组SQL语句组成,通过事务机制确保这一组SQL语句的操作要么全部成功执行成功,完成整个工作任务,如果任何一条SQL执行失败,对数据表所做的操作全部撤销。 事务的目的就是为了保证数据的完整性,以银行转换业务为例: A用户向B转账1000元,步骤如下: 1)A用户账户余额减少1000元; 2)B用户账户余额增加1000元; 3)记录A用户的交易日志。 4)记录B用户的交易日志。 一笔转帐交易将产生四次数据库操作,要么全部都成功,如果有一个失败,其它操作也应该全部被撤销。 转账交易有四次数据库操作,即四条SQL语句,第一条SQL执行的时候是事务的开始,如果全部的SQL语句执行成功,提交事务,如果有任何一条SQL语句执行失败,回滚事务。 commit; -- 提交事务。 rollback; -- 回滚事务。 二、事务的特征 对一组SQL语句操作构成的事务,数据库系统必须保证这些操作的原子性、一致性、隔离性和持久性,即ACID原则。 1、原子性

关系型数据库与非关系型数据库

大兔子大兔子 提交于 2020-03-15 11:30:32
什么是关系型数据库? 关系型数据库是依据关系模型来创建的数据库。 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”) 关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库 关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。 数据的存储形式: 关系的处理形式: 下面是一个E-R图,是多个模型一起用的情况: 常见的关系型数据库: Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL 关系型数据库的特点: 安全(因为存储在磁盘中,不会说突然断电数据就没有了)、 容易理解(建立在关系模型上)、 但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间) 什么是非关系型数据库? 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库) 非关系型模型比如有: 列模型:存储的数据是一列列的

搭建一个网站平台

*爱你&永不变心* 提交于 2020-03-15 06:55:57
主机名修改: cat /etc/hosts 修改主机名临时生效: cat /etc/networks cat /etc/hostname Vi /etc/hostname 进入输入名字 login 退出重新登陆 vi /etc/hosts 进入输入 ip+ 主机名 查看 cat /etc/hosts Ping 主机名 配置 yum 源: ls /opt/ 查看 /opt/ 目录 Mkdir /opt/dvd 新建目录 挂载 查看 ls/opt/dvd cd /etc/yum.repo.d/ 写入文件如下 关闭防火墙 临时生效 安装软件包 启动服务并查看 设置密码 查看端口 所有权限默认为 mariadb 进入网页输入 IP 复制 /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.back 查看 httpd 端口 进入网页输入 IP 复制 /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.back 写入一个文件 修改 php 文件 修改 php 版本 保存退出 进入网页刷新可以看到 上传 discuz 论坛包 将 discuz 注册的用户写在 maridb 数据库上 配置 discuz 安装 discuz 解压指定文件 关联数据库

搭建一个网站平台

戏子无情 提交于 2020-03-15 06:54:58
LAMP:搭建一个网站平台 Linux apache mysql php 基础环境搭建需要有一个干净的系统,配好本地yum 源,网络通顺可以使用远程连接,易操作。 主机名修改:#cat /etc/hosts(本地域名解析) #cat /etc/hostname #vi /etc/hostname修改主机名 #hostname 主机名 #login重新进行登录 关闭防火墙(selinux)关闭 #vi /etc/hosts 进入:加上ip地址 主机名 保存退出:wq #cat /etc/hosts查看 配置yum源 #mount查看挂载 #ls /opt/ #mkdir /opt/dvd/ #ls /opt/ #mount /dev/sr0 /opt/dvd/ #ls /opt/dvd/查看关联包的内容 #yum clean all 清除缓存 #yum list 列出仓库 关闭防火墙 #iptables –F #iptables -X #iptables –L查看一下 进入selinux配置文件不修改退出 下载服务 开始下载 y 同时启动两个服务或者一个一个的启动 查看启动状态 设置mysql密码,进入,退出 查看mysql的端口号:3306 数据库可下载版本信息 查看httpd的端口号 #ls 什么都没有 进入浏览器输入地址 ,复制粘贴 #mv /etc/httpd/conf.d

对网上流传的SQL日志清理脚本的小小改进

时光总嘲笑我的痴心妄想 提交于 2020-03-15 06:41:06
前段时间,发现下面一个单位的MSSQL日志有35G,而数据文件只4G多,貌似有点问题。 所以从网上找来了一个清理脚本。 因为转载的太多,也不知是哪位原创,这里就不引用原文了。原作者见谅哦。 发现的小问题,脚本中的危险操作没有加判断便会执行,所以改了下。 放在这里也是为哪天移动硬盘崩了,还能找回来。 /**/ /* --调用示例 exec p_compdb 'testt',false,true,'d:\bak.ext' exec p_compdb 数据库名,[危险的删除操作],[自动备份],[备份文件名] -- */ use master -- 注意:该存储过程要建在master数据库中 go if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[p_compdb] ' ) and OBJECTPROPERTY (id, N ' IsProcedure ' ) = 1 ) drop procedure [ dbo ] . [ p_compdb ] GO create proc p_compdb @dbname sysname, -- 要压缩的数据库名 @isdel bit = 0 , @bkdatabase bit = 1 , -- 在分离日志的步骤中,可能会损坏数据库

orcle_day01

扶醉桌前 提交于 2020-03-15 06:38:16
Oracle: 数据库, 1,认识数据库 数据库:数据的仓库,保存大量数据的地方,有利于对数据的维护。增删改查很方便。 数据库分类: 层次型数据库:现实世界中很多事物是按层次组织起来的。层次数据模型的提出,首先是为了模拟这种按层次组织起来的事物。 网状型数据库:处理以记录类型为结点的网状数据模型的数据库。处理方法是将网状结构分解成若干棵二级树结构,称为系。 关系型数据库:mysql SQLserver oracle 分布式数据库:是指数据分存在计算机网络中的各台计算机上的数据库 oracle 数据库 oracle :甲骨文公司 全球第一大数据库厂商 2 关系型数据库概念 a,由 E.F.Codd博士在1970年提出关系型数据库系统模型 b,它是关系型数据库管理系统的基础 c,关系型数据库模型包含以下3部分内容 i 包含一系列【关系】和【对象】 ii 包含一系列对于关系的操作-->增删改查 iii 包含数据完整性约束 【规范保存到数据库中的数据】 * 关系型数据库中的关系是指: 把实际问题的数据分别归成若干个简单的二元关系, 一个二元关系都可以建一个满足一定条件的二维表格 关系 : 二维表格 3 关系型数据库是由一系列二维表组成 二维表:每张表由行和列组成 可以通过Structured Query Language 操作数据库表中的数据 二维表:一行 一条数据 一列(字段) 一类数据

数据库的分页问题

前提是你 提交于 2020-03-15 05:23:09
随着数据库中存储的数据的增多,满足用户查询条件的数据也随之增加。而用户一般不可能一次性看完所有的数据, 很多时候也不需要看完所有数据。在这种情况下,分页返回用户查询的数据就显得相当的重要。分页返回用户数据有如下好处: 1、减少服务器磁盘系统地读取压力 2、减少网络流量,减轻网络压力 3、减轻客户端显示数据的压力 4、提高处理效率。 一般而言,分页处理分为两种:应用程序中的分页处理和数据库中的分页处理。目前大多数的应用都是在应用程序中借助支持数据分页处理的数据库访问组件(如DataGrid控件)实现分页处理。实际上,在数据库中实现分页处理,可以从源头减少数据处理量,效果往往可能跟明显。本文主要讨论数据库的分页问题。 常规的取第n页数据方法为: Select top PageSize * from TableA where Primary_Key not in (select top (n-1)*PageSize Primary_Key from TableA )。 对于应用程序而言,所做的就是在生成分页处理的T-SQL语句前先计算好各数字, 对于数据库而言,应该采用动态的T-SQL语句。 以下是使用上述原理实现的通用分页处理存储过程: create proc up_PageView ( @tableName sysname, @colKey nvarchar ( 100 ),

大型网站采用的具有稳定性的系统构架

≡放荡痞女 提交于 2020-03-15 04:47:07
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库 海量数据处理:负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮 服务器 能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面

分库分表问题

守給你的承諾、 提交于 2020-03-14 21:37:36
某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么? 数据千万级别之多,占用的存储空间也比较大,可想而知它不会存储在一块连续的物理空间上,而是链式存储在多个碎片的物理空间上。可能对于长字符串的比较,就用更多的时间查找与比较,这就导致用更多的时间。 可以做表拆分,减少单表字段数量,优化表结构。 在保证主键有效的情况下,检查主键索引的字段顺序,使得查询语句中条件的字段顺序和主键索引的字段顺序保持一致。 主要两种拆分 垂直拆分,水平拆分。 垂直分表 也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。 一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。 垂直分库针对的是一个系统中的不同业务进行拆分,比如用户User一个库,商品Producet一个库,订单Order一个库。 切分后,要放在多个服务器上,而不是一个服务器上。为什么? 我们想象一下,一个购物网站对外提供服务,会有用户,商品,订单等的CRUD。没拆分之前, 全部都是落到单一的库上的,这会让数据库的单库处理能力成为瓶颈。按垂直分库后,如果还是放在一个数据库服务器上, 随着用户量增大,这会让单个数据库的处理能力成为瓶颈,还有单个服务器的磁盘空间,内存

SQLSERVER数据库经常置疑的原因

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-14 16:47:17
近段时间经常收到客户的求助电话,说他们的SQLSERVER业务数据库置疑了,因为系统不能使用,所以他们也不能加油正常营业 (我们是做加油站IC卡管理系统的)因为我们的系统损坏的话,加油站也不能加油,然后我们使用DBCC CHECKDB命令帮客户修复 数据库,客户的数据库一共置疑了两次 我们怀疑是不是他们的硬盘有问题,但是因为计算机是我们配给客户的是DELL商用机(2011年购买的),按道理质量应该不错的。 后来得知是他们油站停过电。我们大概知道置疑的原因了。 我们推测的原因: 停电之前有加油数据要插入数据库,因为SQLSERVER我们都是使用默认设置,什么都没有改,就是说数据插入数据库的时候事务还没有提交, SQLSERVER尝试回滚事务,但是计算机已经关机了,当计算机关机的时候回滚操作会被中断。但是这个回滚动作在下次计算机开机的时候 (即SQLSERVER重启的时候)回滚动作重新开始,由于SQLSERVER做每一个事务都是先写日志,再写入硬盘。 有可能由于内存中的数据丢失或者某些原因造成数据库不能回滚操作,那么整个数据库就置疑了 使用DBCC CHECKDB命令帮客户修复数据库 我们当时使用下面的sql脚本修复的 --修复数据库DBCC ALTER DATABASE test SET EMERGENCY ALTER DATABASE test SET SINGLE_USER