关于数据库备份和外键约束

数据库备份(简单谈谈方案,后面抽空详细描述一下场景)

一种是使用命令定期备份到本地或者服务器,缺点是如果服务器在执行命令之前宕机,只能回复上一次备份的数据,上一次到宕机这段时间的数据备份不了,造成丢失。

另一种是通过连接高速网络实施热备份,通过binlog实现主数据库宕机快速连接到备用数据库

外键约束

外键约束概念;一A表中的某个字段和另外一个B表中的主键字段关联,那么B表中关联的主键字段就是A表的外键。(一定是和某个表中的主键关联,不是主键的字段不能作为外键)

外键约束场景:如果两张表的数据“感知”要求强一致,可以使用外键。比如,一张部门表,一张用户表,不加外键的情况下,部门表里的数据说删就删了,也不会报错,用户表中所关联的部门id想怎么填就怎么填,哪怕我填一个不存在的部门id也可以新增到表中,但是,如果给用户表加了部门id外键,你删除部门的时候就不能随便删除了,如果你删除的部门下有关联的用户,删除失败,要先删部门下的人员才能删除部门,同理,你新增用户的时候部门id不能随便填了,必须填部门表中存在的部门id,否则新增失败。

设置外键方式:第一种,在新建表的时候就设置字段外键,

例如;

create table emp{
id varchar(10),
name varchar(20),
did varchar(10) FOREIGN KEY (did) REFERENCES dept(id)
}

第二种,修改表结构,添加外键

ALTER TABLE 表名
ADD [CONSTRAINT 外键名] FOREIGN KEY [id] (列名)
REFERENCES 表名(列名)

外键常见问题

1,外键字段一定要加索引吗?

不一定,看你查询需求多不多,视业务而定

扫描二维码关注公众号,回复: 15484750 查看本文章

2,外键宏观上的使用场景?

适合使用在用户量小,并发低,数据变动不平凡的场景,不适合使用在互联网项目,因为

现在的互联网项目用户量大,平台操作多,数据关系复杂,变动量大,不适合在表中使用外键,会造成数据库性能瓶颈问题。

3,为什么说使用外键会造成数据库性能问题?

因为设置了外键相当于把数据一致性交给了数据库去管理,虽然省了开发人员的工作量,但是耗费了数据库的资源,而且当涉及外键字段的增删改操作,数据库都要去校验操作的合理性,会占用数据库的资源,尤其是数据量,并发量大的项目,容易出现数据库性能瓶颈。

猜你喜欢

转载自blog.csdn.net/guliudeng/article/details/121570283