数据库总结

非关系型数据库:  mongdb redis  kafka

关系型数据库 :  oracle  sqllite

版本的数据库 5.6/ 5.7 / 8.0

版本的数据库 5.6/ 5.7 / 8.0
存储引擎
innodb 5.6版本以上默认的存储引擎
支持事务
select + update
begin;
select * from 表 where 条件 for update;
update 表 set 字段=值 where 条件;
commit;
行级锁 :
对于少量数据的并发的修改效率更高
但是对于整个表中大量字段的修改锁反而拖慢了速度
支持外键
create table 表名(
字段名 数据类型(长度) 约束,
uid int,
foreign key uid references user(ui)
on update cascade
)
myisam 5.5版本以下默认的存储引擎
查询速度和insert的速度都很快
表级锁 : 对高并发的大量修改没有优势的
innodb支持的都不支持
memory
断电消失
blakhole
多级主从复制 往里写啥啥没
binary_log = bin_log
sql -> 分析 -> 优化 -> 编译 -> 二进制的操作






innodb存储引擎的的索引特点
索引的树形结构和数据在一起
必须有一个主键
根据这个主键形成一个聚集索引数
myisam中索引的特点
索引的树形结构和数据分开存储
所有的索引都是辅助型索引

得出 innodb的查询更快

myisam中索引的特点
得出 : 插入必innodb更方便


关于nginx反向代理和负载均衡

索引的特点

4大索引:

普通索引: index

,主键索引: primary key

唯一索引: unique

联合索引: unique(字段1,字段2) primary key(字段1,字段2) ,index(字段1,字段2)

创建索引:

创建索引
create index 索引名 on 表名
删除索引
drop index 索引名 on 表名

索引是否命中

1.必须对这个字段创建索引
2.必须是以索引列为条件
3.索引列的范围必须小 id between 1 and 1000000
4.like 可以是'a%' ,不能用 "%a"
5.不能再条件中使用函数 avg(num)>1
6.不能在条件中使用 加减乘除  id*3 = 20
7.条件中用了or 必须条件中提到的所有的列都是索引
8.最左前缀,联合索引(a,b,c,d)
9.order by的列必须在select的列中    

 关于数据库的优化

1.正确建立索引,以及命中索引查询,极大地加快查询速度
2.mysql主从复制,读写分离,减轻数据库负荷压力,保证数据安全
3.使用缓存技术,使频繁操作的数据使用放在redis内存中
4.分库
5.分表
6.固定长度的字段放在前面,加快查询速度
7.对于固定选择的数据内容,使其对相应关系保存在内存中
8.limit的使用

 数据库的事务

事务的4大特性

原子性, 指事务是一个不可分割的整体,要么都发生,要么都不发生

一致性, 指事务处理前后数据的完整性必须保持一致

持久性,指事务一旦提交,对数据库的改变是永久的

隔离性 指多个用户访问同一个数据库时,一个用户的事务处理不能被其他用户的事务干扰,多个并发事务之间的数据要进行隔离








原文地址:https://www.cnblogs.com/zhangqing979797/p/10533210.html