MySQL 数据库介绍
人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,但是随着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题。
计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统。数据库系统解决的问题:持久化存储,优化读写,保证数据的有效性。
当前使用的数据库,主要分为两类:
- 文档型,如Sqlite,就是一个文件,通过对文件的复制完成数据库的复制
- 服务型,如Mysql、Postgre,数据存储在一个物理文件中,但是需要使用终端以Tcp/Ip协议连接,进行数据库的读写操作
E-R模型
当前物理的数据库都是按照E-R模型进行设计的
E表示entry,实体
R表示relationship,关系
一个实体转换为数据库中的一个表
-
关系描述两个实体之间的对应规则(关系),包括
-
一对一
角色表中的一条数据 对应 员工表中 的一条员工的数据
roles角色表
id role 1 ceo
-
staffs员工表
id | name | role_id |
---|---|---|
1 | 雷军 | 1 |
-
一对多
一个班级表的一条数据可以对应学生表中多条数据
id class 1 高三(一) 2 高一(五)
id | name | class_id |
---|---|---|
1 | 楠有枝 | 2 |
2 | shark | 2 |
3 | 李华 | 1 |
反之就是 多对一
- 多对多(扩展自修)
一个老师可以教授多个班级,一个班级可以有多个老师。
此时,就需要三个表。
- 老师表
- 班级表
- 用来表示他们关系的表
这个第三张表就是多对多关系需要的表
teacher表
id | name |
---|---|
1 | 朱老师 |
2 | 林老师 |
class表
id | name |
---|---|
1 | 高三(一) |
2 | 高二(九) |
3 | 高一(五) |
teacher2class表
id | teacher_id | class_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 3 |
3 | 2 | 1 |
4 | 2 | 2 |
- 关系点表示被转换为数据库表中的一个列 ,在关系型数据库中一行就是一个对象。
RDBMS
RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 微软的 SQL Server和 Microsoft Access, IBM DB2, 甲骨文的Oracle以及开源的 MySQL和PostgreSQL(读作:post - gress - Q - L, 简略念为"postgres") 。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
MySQL 5.7主要特性:
- 更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的
- 更好的InnoDB存储引擎
- 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑升级也变得可能
- 更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的难题
- 原生JSON类型的支持
- 更好的地理信息服务支持:InnoDB原生支持地理位置类型,支持GeoJSON,GeoHash特性
- 新增sys库:以后这会是DBA访问最频繁的库
名词解释:
QPS:Queries Per Second意思是 每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。