关系型数据库:musql,oracle,sql server
1.1:关系型数据库:是指才有关系模型来组织数据库的数据。以行和列的方式存储数据
一系列的行+列存储的数据 构成一张表
多张表构成一个数据库。
1.2:特点:
1:结构化方式存储数据库
2:标准的结构化查询语句,标准的CRUD
3:事务性。遵循ACID(原子性,一致性,隔离性,持久性)
1.3:存储引擎:
在创建表的时候数据库的存储引擎是可以选择的,默认是InnoDB。存储引擎就是表的类型。数据库的存储引擎决定了表在计算机中的存储方式。不同的存储引擎提供了不同的存储机制,索引机制,锁定水平等功能。
注:在创建数据表时,要根据业务的实际需要,选择不同的存储引擎。
如配置表,用户表。这两个表存储引擎相同吗?
配置表信息:一般是在项目启动的时候读取一次,在项目运行过程中,一般不会去修改配置表。
用户表:项目启动时,不会读取表数据,但是在项目运行过程中,随时都有可能修改。
所以:因为他们的使用场景不一样,在创建表的时候选择的存储引擎是也不一样的。
总结:类似于配置表的 一般在创建表时 会选择MyISAM存储引擎
类似于用户表的一般在创建表的时候会选择InnoDB存储引擎。
MyISAM存储引擎:
1:在mysql数据库5.5版本以及以前是默认的存储引擎
:2:追求存储数据的"速度"。存储数据可能不准 如数据会串。
3:锁:表锁
4:索引:支持B树索引,哈希索引。
InnoDB:
1:在mysql数据库5.5版本以后是默认的存储引擎。
:2:追求存储数据的准确性,事务一致性。
3:锁:行锁 (只锁一行,别的行不管)
4:索引:支持B树索引
1.4:索引
是一种数据结构,用于帮助我们在大量数据中快速查询数据的
建索引的目的是为了提升查询数据的速度的。但是建了所以不一定能提升查询的速度的。
注:建立索引 只能提升查询速度,但是会降低 修改速度。
建立索引对数据量大的表是有效果的 对数据里小的表是没有什么效果的。
索引的类型:
主键索引:primary key 有且仅有一个。
唯一索引:不可重复但是可以存null
复合索引:由表的多列按顺序组合成索引。
1.5:sql语句:
sql执行过程:
select 的解析过程:
1:from 表 数据源中捞取数据
2:where 条件 对捞取的数据进行条件过滤
3:group by 分组
3.1:根据上面的条件字段来分组 --建议使用where条件字段
3.2:不按照上面的条件字段来分组 ----会产生临时表
4:having 分组过滤
5:select 字段
6:order by ---建议使用select字段排序
7:limit 数据量分页
查看慢查询sql:
show variables ----查看数据库的配置信息
show variables like 'slow%' --查看慢查询相关的配置
slow_query_log OFF 慢查询是关的
slow_query_log_file 慢查询开启后日志存放的路径
show variables like '%long_query_time%' 查看慢查询的配置的阈值是多少。单位是秒
show variables like 'max_connections%' 查看系统配置的最大连接数。
show global status like 'Max_used_connections' 查看当前用户已经建立的连接数。
定位慢查询日志
1:要开启慢查询的开关。(因为数据库中慢查询的日志一般是关闭的。因为慢查询开启后要写日志 消耗数据库的IO.)
2:找到配置文件,修改阈值。
sql优化
二:非关系型数据库:redis,Mongo DB
表与表之间是没有关联关系的,数据与数据之间是额米有关联关系的。
redis:
key-value 形式的非关系型数据。
value 的类型有典型的五种:
1:字符串
2:列表
3:哈希
4:集合
5:有序集合