目录
1. 数据库概述
1.1. 数据库类型
1.1.1. 关系型数据库
关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
常见 关系型数据库
关系型数据库常见的有 Oracle,SQLServer,DB2,Mysql,Microsoft Access等多个品种,每种数据库语法功能各具特色。
1.1.1.1. MySQL
- MariaDB
- MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
- 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
Structured Query Language: 结构化查询语言;
1.1.2. 非关系型
- 非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言);
- 强调Key-Value 存储和文档数据库的优点;
- 使用范围:分布式数据库,近几年分布式数据库用的比较火的是redis
1.1.2.1. Redis
- Redis是一个基于内存的Key-Value非关系型数据库,由C语言进行编写。
- Redis一般作为分布式缓存框架、分布式下的SESSION分离、分布式锁的实现等等。
- Redis速度快的原因:基于内存、单线程、多路复用。
1.2. 大数据分析
-
概述
- 联机分析处理(OLAP,On-line Analytical Processing),数据量大,DML少。使用数据仓库模板
- 联机事务处理(OLTP,On-line Transaction Processing),数据量少,DML频繁,并行事务处理多,但是一般都很短。使用一般用途或事务处理模板。
- 决策支持系统(DDS,Decision support system),典型的操作是全表扫描,长查询,长事务,但是一般事务的个数很少,往往是一个事务独占系统。
-
OLTP(On-Line Transaction Processing,联机事务处理)
-
OLAP(On-Line Analytical Processing,联机分析处理)
也称 数据仓库;
在OLAP系统中,常使用分区技术、并行技术。
参考:
2. 数据库结构与性能
2.1. 概念
- 大小写 Mysql默认的字符检索策略:
- utf8_general_ci,表示不区分大小写;
- utf8_general_cs 表示区分大小写,
- utf8_bin 表示二进制比较,同样也区分大小写;
2.1.1. 性能指标概念
-
TPS -(Transactions Per Second)
即:数据库的每秒传输的事务处理个数,主要是对事务性存储引擎(InnoDB)的一个性能指标。 -
QPS -(Queries Per Second)
即数据库的每秒查询处理量,同时适用InnoDB和MyISAM 等存储引擎。
2.1.2. proxy与agent的区别
Proxy:服务器代理
Agent:代理服务器
- 内在关联与区别
二者都是面向不同类别用户并处理请求,
Proxy强调服务器的安全性、隐秘性、面向的调用方为非用户,分解Server的压力;
Agent强调客户端(面向用户级)、本地化、统一收集信息,处理转换消息,发送至Server并更新本地状态。
Agent可以调用Proxy或直接调用Server… - 区别:
Agent 代理 通常指与用户接口的客户端程序
Proxy 代理 接收用户请求并将请求发给服务器,然后接收服务器回应并返回给用户 实际上Proxy的功能就是代替用户访问服务器,用户被隐藏.
2.2. 元数据
-
元数据 包含的内容:
- 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。
- 数据库和数据表的信息: 包含了数据库及数据表的结构信息。
- MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等。
元数据: 即除数据之外的数据信息;//
3. 性能测试
3.1. POC测试
POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和平台的承载能力和性能变化。
参考:
3.2. TPC* 测试
-
概述
TPC现有的测试标准为:TPC-E、TPC-C、TPC-H、TPC-App。根据这4个测试基准,目前TPC主要包括的4个技术小组委员会:TPC-E 技术小组委员会、TPC-C 技术小组委员会、TPC-H技术小组委员会、TPC-App技术小组委员会。前期TPC使用过但目前已经停止使用的测试标准有:TPC-A、TPC-B(数据库处理能力测试标准)、TPC-D、TPC-R(决策支持系统测试标准,类TPC-H)、TPC-W(Web处理能力测试标准)。 -
分类
TPC测试标准分类
联机在线事务处理系统(OLTP)测试标准:TPC-C、TPC-E(最新)
决策支持/大数据(DS)测试标准:TPC-H、TPC-DS(最新)
服务器虚拟化(VMS)测试标准:TPC-VMS-
OLTP测试标准
由于数据库的应用一般有两种,一种是OLTP,即在线联机事务处理,另一种是数据挖掘。就目前来说,OLTP仍然是主流应用。所以从一定程度来说,TPC-C和TPC-E的结果对于数据库系统采购都有一定的参考价值,比如银行、证券、税务报税系统、电子商务网站、电信业务等都是比较典型的OLTP应用。 -
TPC-H
TPC-H(商业智能计算测试) 是美国交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集.目前,在学术界和工业界普遍采用它来评价决策支持技术方面应用的性能. 这种商业测试可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用。
-
3.2.1. TPCH测试
- TPC-H 基准测试是由 TPC-D(由 TPC 组织于 1994 年指定的标准,用于决策支持系统方面的测试基准)发展而来的.
- TPC-H 用 3NF 实现了一个数据仓库,共包含 8 个基本关系,其数据量可以设定从 1G~3T 不等。TPC-H 基准测试包括 22 个查询(Q1~Q22),其主要评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间.
- TPC-H 基准测试的度量单位是每小时执行的查询数( QphH@size),其中 H 表示每小时系统执行复杂查询的平均次数,size 表示数据库规模的大小,它能够反映出系统在处理查询时的能力.
- TPC-H 是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数.
- 总而言之,TPC 组织颁布的TPC-H 标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。
4. 数据库 业务实现
4.1. 事务
- 脏读:(读取未提交数据),常发生于转账与取款操作中;
- 不可重复读(前后多次读取,数据内容不一致);
- 幻读(前后多次读取,数据总量不一致);
4.1.1. 事务有四种基本特性
ACID,它们分别是:
Atomicity-原子性,Consistency-一致性,Isolation-隔离性,Durability-持久性。
- 原子性(Atomicity)
事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 - 一致性(Consistency)
事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 - 隔离性(Isolation)
同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。 - 持久性(Durability)
事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
上面语法设置的值选项就是mysql的四种隔离级别:
READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE
参考
4.2. 重要功能
4.2.1. MVCC
多版本并发控制(MultiVersion Concurrency Control);
-
MVCC简介
MVCC是一种多版本并发控制机制。 -
MVCC是为了解决什么问题?
- 大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用.
- 锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销.
-
MVCC实现
- MVCC是通过保存数据在某个时间点的快照来实现的. 不同存储引擎的MVCC. 不同存储引擎的MVCC实现是不同的,典型的有乐观并发控制和悲观并发控制.
参考:
4.3. 数据处理
4.3.1. 数据脱敏
-
定义
- 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
- 在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
-
实现
数据脱敏实现可以从数据库查数据的时候进行处理,可以在查出数据后进行处理。在这里记录了MySQL数据库查询时处理,通过使用mysql字符串函数实现。
参考:
4.3.2. 批处理
-
概念
-
当需要向数据库中插入大批量数据时,在批处理之前,要执行100条sql,就只需100此打开连接关闭连接和网络传输。
-
批处理过程:将大量的SQL打包成一个批次,发送给服务器,服务器接收数据,打开批,一次执行批里的sql,这样减少与数据库的交互,提高程序的效率。
-
如何实现批处理?
-
实现方式一:Statement对象实现
需求:利用statement开发,插入dept表,100条 -
实现方式二:Preparedstatement对象实现
需求:利用preparedstatement对象,向dept表中插入100条数据
参考:
5. 分布式数据库
5.1. 分布值
Greenplum是分布式系统,创建表时需要指定分布键(创建表需要CREATEDBA权限),目的在于将数据平均分布到各个segment。选择分布键非常重要,选择错了会导致数据不唯一,更严重的是会造成SQL性能急剧下降。
- 分布策略
- hash 分布
- 随机(randomly)分布
参考:
- Mysql元数据分析
–各种元数据