以MySQL为例:
影响数据库性能的主要因素总结如下:
1、sql查询速度
2、网卡流量
3、服务器硬件
4、磁盘IO
以上因素并不是时时刻刻都会影响数据库性能,而就像木桶效应一样。如果其中一个因素严重影响性能,那么整个数据库性能就会严重受阻。另外,这些影响因素都是相对的。
例如:当数据量并没有达到百万千万这样的级别,那么sql查询速度也许就不是个重要因素,换句话说,你的sql语句效率适当低下可能并不影响整个效率多少,反之,这种情况,无论如何怎么优化sql语句,可能都没有太明显的效果。
相关内容拓展:1、SQL查询速度
风险:效率低下的SQL
2、网卡流量
风险:网卡IO被占满(100Mb/8=100MB)
方案:
①减少从服务器的数量。从服务器都要从主服务器上复制日志,所以,从服务器越多,网络流量越大。
②进行分级缓存。前方大量缓存突然失效会对数据库造成严重的冲击。
③避免使用“select * ”进行查询
④分离业务网络和服务器网络
3、磁盘IO
风险:磁盘IO性能突然下降。
方案:使用更好的磁盘设备解决。
分为两种情况:一,表还不存在的话
create table A(
ID int primary key,
NAME varchar(20) unique(NAME))
二,表已经存在的话。
如果要为表创建什么约束的话就添加什么语句:
要为ID添加主键约束的话(前提表A里的ID不能有重复数据)
alter table A add constraint FK_11 primary key (ID)
要为NAME添加唯一性约束的话
alter table A add constraint FK_22 unique(NAME)
第三范式的要求如下: 1,每一列只有一个值 2,每一行都能区分。 3,每一个表都不包含其他表已经包含的非主关键字信息。实质上,设计范式用很形象、很简洁的话语就能说清楚。这里将对范式进行通俗地说明,以一个简单论坛的数据库为例讲解怎么样将这些范式应用于实际工程.范式说明 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 例如,符合第一范式: 字段1 字段2 字段3 字段4 不符合第一范式: 字段1 字段2 字段3 字段4 字段3.1 字段3.2 很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分), 关键字为组合关键字(学号, 课程名称),因为存在如下决定关系:(学号, 课程名称) → (姓名, 年龄, 成绩, 学分) 这个表不满足第二范式,因为存在如下决定关系: (课程名称) → (学分) (学号) → (姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF,这个选课关系表会存在如下问题:(1) 数据冗余:同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程, 姓名和年龄就重复了m-1次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现 同一门课程学分不同的情况。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)