数据库
MySQL数据库优化
1.分表分库, 主写从读
2.查询优化,避免全表扫描 where 和 order by建索引
3.update 字段部分更新、避免全更
4.大表分页再进行join
5.避免where子句对null判断,否则引起引擎放弃使用索引全表扫描
(null, or, !=, >, <, %, like等)
InnoDB和MyISAM
InnoDB: 外键、事务(可回滚)、锁、需指定引擎、清除一行一行清除,较为费时
MyISAM:查询、插入为主,整表清空删除较快
redis项目中存储了什么信息
常用的固定性的小型数据
登录信息
用户信息
Redis指令:清空 flushall
MongoDB的聚合方法
计算平均、计数、求和等等
设计数据库的时候什么时候设定关联
先建表会有一些基础关联, 后期在调用的过程当中, 再随便定义
一张MySQL表有3个字段(姓名,登录次数,最后登录时间),假设用户名是newborn,请算出登记次数累计,和更新最后登录时间的方法
select "登陆次数" from table where name is "newborn";
select "最后登录时间" from table where name is "newborn";
关系型数据库中, 表与表之间有左连接、内连接、外连接.解释含义区别
select * from students;
select * from classes;
内连接: 两表依据条件合并, 交集
select * from students inner join classes on students.cls_id = classes.id;
左连接(左外连接): 左表全值,右表含不符合条件值填Null
select * from students left join classes on students.cls_id = classes.id;
右连接(右外连接): 右表全值,左表含不符合条件值填Null
select * from students right join classes on students.cls_id = classes.id;
数据库事务
四大特性(ACID)
原子性, 隔离性, 持久性,
四大隔离级别
Read uncommitted – 脏读,不可重复读,幻读
Read commit – 不可重复读,幻读(Oracle默认)
Repeatable read – 幻读(mysql默认)
Serializable – 单线程,效率慢
脏读:一个事务读取到另一个事务未提交的数据
不可重复读:在当前事务中,读取到了另一事务提交的更新和删除的数据
幻读:在当前事务中,读取到了另一事务提交的插入的数据
数据库ACID分别代表什么?索引对增删改查的速度分别有什么影响?如果让你设计一个用户注册功能,如何防止用户名重复
唯一键
数据库引擎?
innob引擎 Memory引擎 Merge引擎
innob引擎一大特点就是支持外键。 内存和空间大 支持事务