五金网站建设,网络优化需要哪些知识,如何下载免费直播软件,北京城建设计集团网站目录 一、关系型数据库
数据库权限 表设计及创建 表数据相关 数据库架构优化
二、非关系型数据库
redis 今天给大家稍微整理了一下#xff0c;内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...#xff0c;以及相关的面试题#xff0…目录 一、关系型数据库
数据库权限 表设计及创建 表数据相关 数据库架构优化
二、非关系型数据库
redis 今天给大家稍微整理了一下内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...以及相关的面试题希望即将面试的朋友们看了后能有帮助。
一、关系型数据库
关系型数据库有SQLserver、Oracle、MySQL 问题一关系型数据库与非关系型数据库区别 都是数据库用来存储数据 关系型数据库存储数据是以表的形式进行存储表之间有存在主外键关系那也就是说数据之间存在关系 非关系型数据库数据存储是以键值对的形式存储数据之间没有关系/联系 数据库权限
mysql
端口号3306 数据库权限分类mysql库 user、db、table_priv表权限表、columns_priv 生产环境 项目经理Create、drop、grant、select、Update、delete、insert... 项目组长select、Update、delete、insert... 普通开发select 测试环境一般也是拥有所有权限 开发环境一切自己说了算拥有所有权限 表设计及创建
工具powerdesign
#三大范式
第一范式列不可再分
例地址填时湖南省长沙市岳麓区天顶街道浪琴湾清水22栋用一个字段address存储违反了第一范式应该用四个字段Provence---湖南省 city---长沙市 area---岳麓区 address---天顶街道浪琴湾清水22栋。
为什么要遵循第一范式
如果要统计湖南省的某物品销量时可以直接统计Provence字段。
把表设计字段力度越大未来应对变化的可能性越强。 第二范式主键约束 非主属性与非主属性不能存在关系
例购物车下单多个订单项对应一个订单当订单入库时数据库表设计字段是以下两种 违反在建表中设计4个字段名称 数量 单价 小计 遵循在建表中设计3个字段名称 数量 单价
第三范式外键约束 关联表的数据不一致 举例看病流程表DoctoriduserId 如果需要在页面上显示医生的姓名以及患者的姓名的话需要连接看病流程表医生表患者档案表有以下表设计 违反DoctoridDoctorNameuserIduserName 遵循DoctoriduserId 六大约束
NOT NULL 非空约束、unique唯一约束、primary key主键约束、Foreignkey外键约束、CHECK 检查约束、default默认约束 表数据相关
问题二drop/delete/truncate的区别
drop删除表和数据delete删除数据和索引truncate删除数据不包括索引。
如果现在有一个表表里面有10条数据drop连着表和数据一起删除delete删除where条件后面的数据当这个时候后面表再有新增的话会在where已经删除数据的索引上进行新增而truncate相反。查询笔试题 链表查询子查询、外连接、内连接、Union all
问题三sql查询如何优化 1.该sql语句是否建立索引 2.如果有索引是否失效 如like %%已失效 3.索引泛滥 通过explain执行计划查询sql语句的执行效率 数据库架构优化 方法一集群 读写分离 将数据库读与写解耦一定程度上提高性能 成本降低可以资源在利用 技术实现数据库中间件Mycat 方法二分库分表 水平分库 场景当遇到大量需要查询数据时我们可以按月份分库如果需要查找指定数据可以按月份进行查询。 实现 1.每月凌晨00:00代码自动构建新表通过用任务调用框架quartz实现 create t_order_${month} as select * from t_order where 12 2.insert into t_order_${month} values(?,?,?) 垂直分库 按照数据区分热数据与冷数据分开将一张表拆成两张一对一关系的表分别是常用数据表与冷数据表。一般情况下只需要查询常用数据表就行了提升数据查询效率。如果需要查询冷数据表时也可以进行连表查询。 二、非关系型数据库
redis
存储类型string、set、hash、zset、list
作用redis作为缓存就是为了减少对数据库的访问压力当我们访问一个数据的时候首先我们从redis中查看是否有该数据如果没有则从数据库中读取将从数据库中读取的数据存放到缓存中下次再访问同样的数据的是还是先判断redis中是否存在该数据如果有则从缓存中读取不访问数据库了。
#问题四击穿、穿透、雪崩
图解如下 击穿------就是大量请求到达redis正好该请求的key过期大量请求到达Mysql数据库。
穿透-----指的是访问一个压根不存在的数据那么每一次请求都会穿透redis到达MySQL。 解决方法就是给不存在的数据设置一个默认值
雪崩-----就是大量请求到达redis访问的不同的key时在同一时间失效如果在redis拿不到值那么大量的请求会到达MySQL导致MySQL宕机。 解决就是给不同的缓存key设置不同的时间