数据库系统

(77)一文了解Redis

这一生的挚爱 提交于 2020-01-10 03:24:36
为什么我们做分布式使用Redis? 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里对 Redis 常见问题做一个总结,解决大家的知识盲点。 1、 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发。 如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis。 性能: 如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 特别是在秒杀系统,在同一时间,几乎所有人都在点,都在下单。。。执行的是同一操作———向数据库查数据。 根据交互效果的不同,响应时间没有固定标准。在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。 并发: 如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问数据库。 使用 Redis 的常见问题 缓存和数据库双写一致性问题 缓存雪崩问题 缓存击穿问题 缓存的并发竞争问题 2、 单线程的 Redis 为什么这么快 这个问题是对 Redis

SQL Server 存储过程

…衆ロ難τιáo~ 提交于 2020-01-10 02:52:44
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。 Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。 1、 存储过程的优点 A、 存储过程允许标准组件式编程 存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。 B、 存储过程能够实现较快的执行速度 如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T

SQL Server 存储过程

↘锁芯ラ 提交于 2020-01-09 13:59:53
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。 Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。 1、 存储过程的优点 A、 存储过程允许标准组件式编程 存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。 B、 存储过程能够实现较快的执行速度 如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T

表空间Tablespace

别说谁变了你拦得住时间么 提交于 2020-01-08 22:09:28
Oracle Schema Objects Table Storage O racle 数据库 如何保存表数据? Oracle Database uses a data segment in a tablespace to hold table data. Oracle 数据库使用 表空间 中的 数据段 保存表 数据 。 As explained in "User Segments" , a segment contains extents made up of data blocks . 如 " 用户段 " 所述, 段 包含 由 数据块 组成的 扩展盘区 。 The data segment for a table (or cluster data segment, when dealing with a table cluster ) is located in either the default tablespace of the table owner or in a tablespace named in the CREATE TABLE statement. 表数据段 (或涉及表簇时的簇数据段)位于表所有者的默认空间中,或 CREATE TABLE 语句中所指定的表空间中。 表空间、段、区、块的关系 逻辑存储结构包括 表空间,段,区,数据块 。逻辑结构之间的关系是

Oracle数据库的体系结构和用户管理

。_饼干妹妹 提交于 2020-01-08 07:44:38
一、Oracle体系结构 数据库的体系结构是指数据库的组成、工作过程、以及数据库中数据的组织与管理机制,要了解Oracle数据库的体系结构,必须理解Oracle系统的主要组件和重要概念。 1、Oracle体系结构概述 Oracle体系结构包含一系列组件,如下图所示,图中显示了Oracle体系结构中的主要组件,包括实例、用户进程、服务器进程、数据文件及其他文件,如参数文件、口令文件和归档日志文件等。从图中可以看出,实例和数据库是Oracle数据库体系结构的核心组成部分,也是最重要的两个概念;DBA一个很重要的工作就是维护实例和数据库本身的正常工作。 1)实例 Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA)并启动一系列Oracle后台进程。Oracle实例有两种类型:单进程实例和多进程实例,单进程Oracle实例使用一个进程执行Oracle的全部操作,在单进程环境下的Oracle实例仅允许一个用户可存取;多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每个连接的用户都有一个进程。 2)数据库 数据库是数据的集合,物理上指存储数据库信息的一组操作系统文件,每个数据库有一个逻辑结构和物理结构。物理结构是指构成数据库的一组操作系统文件,主要由三种类型文件组成

Github搬运(本人的)数据库系统概念与实现(一)

假如想象 提交于 2020-01-08 01:12:17
数据库系统 何为数据库系统,根据《耶鲁大学》的《数据库系统概念》我们可以知道,数据库系统是一些互相关联的数据以及一组使得用户可以访问和修改这些数据的程序的集合 数据库系统的主要目的是为用户提供数据的抽象视图,换言之,数据库系统隐藏了关于数据存储和维护的一些细节。 数据抽象 由于许多数据库系统的用户并不会对数据库进行专业化的操作,所以身为数据库系统的开发人员应该通过以下几个层次来为用户屏蔽复杂性,以简化用户和数据库系统的交互操作 物理层 此为数据库最低层次的抽象,描述了数据实际上是怎么存储的,物理层详细描述复杂的底层数据结构 逻辑层 描述了数据库中存储什么数据以及这些数据间存在什么样的关系,因此逻辑词就可以通过少量相对简单的结构描述了整个数据库 虽然在物理层方面会涉及很多复杂的底层数据结构但逻辑词的用户不比知道这样的复杂性,这被称为 物理数据独立性 (physical data independence) 数据库管理员使用抽象的逻辑层必须确定数据库中应该保存哪些信息 视图层 描述了整个数据库的一部分,由于一个大型数据库中所存储的信息的多样性,有些时候,用户并不会关注所有的信息,而只需访问数据库的一部分 视图层抽象的定义正是为了使这样的用户与数据库系统的交互更加简单,数据库系统可以为同一数据库提供多个视图 总结 数据库系统为数据库开发者屏蔽了许多物理层的最底层的存储细节

【msql】关于redo 和 undo log

不打扰是莪最后的温柔 提交于 2020-01-07 20:14:29
InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性。和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL(Write Ahead Log),即在持久化数据文件前,保证之前的redo日志已经写到磁盘 一、概念 1、Innodb Crash Recovery 这是InnoDB引擎的一个特点,当故障发生,重新启服务后,会自动完成恢复操作,将数据库恢复到之前一个正常状态(不需要重做所有的日志,只需要执行上次刷入点之后的日志,这个点就叫做Checkpoint)恢复过程有两步 第一步:检查redo日志,将之前完成并提交的事务全部重做; 第二步:将undo日志中,未完成提交的事务,全部取消 2、LSN LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数。 在 InnoDB 的日志系统中,LSN 无处不在,它既用于表示修改脏页时的日志序号,也用于记录checkpoint,通过LSN,可以具体的定位到其在redo log文件中的位置。 LSN 用字节偏移量来表示。每个page有LSN,redo log也有LSN,Checkpoint也有LSN

CentOS 7部署Oracle 12c企业版数据库

自闭症网瘾萝莉.ら 提交于 2020-01-07 13:52:15
一、安装Oracle 12c 1、安装CentOS 7操作系统的注意事项 由于本次安装Oracle 12c软件是在CentOS 7系统上实现的,那么首先安装CentOS 7操作系统,安装要求如下: 防火墙的配置选项设置为禁用; SELinux设置为禁用; 默认安装设置为软件开发; 内核选择3.10.0-862.el7.x86_64及以上版本; 2、前置条件的准备 Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型、内存和交换分区、硬盘空阿金、内核参数、软件环境、用户环境等都有相应的要求。只要满足了这些必备的条件,才能确保Oracle 12c安装成功、稳定运行。 1)系统及配置要求 Oracle 12c明确支持的Linux操作系统包括Oracle Linux 7、Oracle Linux 6、Oracle Linux 5、Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 5等,因为Red Hat Enterprise 和CentOS属于同步并行的操作系统,所以Oracle 12 c同样支持CentOS 7、CentOS 6、CentOS 5操作系统。在其他Linux系统中安装时,个别软件或配置文件可能需要进行适当的调整。通过以下命令查看系统版本: [root

MySQL系统信息函数

纵饮孤独 提交于 2020-01-07 08:30:38
系统信息函数是用来查询MySQL数据库的系统信息。 系统信息函数包括查询数据库版本、数据库当前用户等信息。 MySQL系统信息函数如下表所示: MySQL系统信息函数 version() 返回数据库的版本号 connection_id() 返回服务器的连接数 database() 返回当前数据库名 schema() 返回当前数据库名 user() 返回当前用户名称 system_user() 返回当前用户名称 session_user() 返回当前用户名称 current_user 返回当前用户名称 current_user() 返回当前用户名称 charset(str) 返回字符串str的字符编码 collation(str) 返回字符串str的字符排列方式 last_insert_id() 返回最后生成的auto_increment(自动增长)的值 练习代码: ## MySQL系统信息函数 select version(),connection_id(); select database(),schema(); select user(),system_user(),session_user(); select current_user,current_user(); select charset('admin'),collation('关系型数据库'); select

Java分布式应用技术架构介绍

冷暖自知 提交于 2020-01-07 04:46:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 分布式架构的演进 系统架构演化历程-初始阶段架构 初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP 特征: 应用程序、数据库、文件等所有的资源都在一台服务器上。 描述: 通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。 系统架构演化历程-应用服务和数据服务分离 好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver 特征: 应用程序、数据库、文件分别部署在独立的资源上。 描述: 数据量增加,单台服务器性能及存储空间不足,需要将应用和数据分离,并发处理能力和数据存储空间得到了很大改善。 系统架构演化历程-使用缓存改善性能 特征: 数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。 描述: 系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。 缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。 系统架构演化历程-使用应用服务器集群 在做完分库分表这些工作后