外键

  • 使用条件
    • 两张表必须是InnoDB表,MyISAM表暂不支持
    • 外键列必须建立索引,MYSQL4.1.2后自动创建索引
    • 外键关系的两个表的列数据类型必须是相似的
  • 好处
    • 保证数据的一致性和一些级联操作

例子

  1. create table busi_table(
  2. busi_id char(13) not null primary key,
  3. busi_name char(13) not null,
  4. repo_id char(13) not null,
  5. foreign key(repo_id) references repo_table(repo_id))
  6. type=innodb;

数据库主要存储引擎有哪几种?

InnoDB

存储使用的是B+Tree。
支持事务处理、并发控制、支持外键、支持mvcc的行级锁。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MYSIAM

存储使用的是B+Tree。
MyISAM 这种存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。

MEMORY

memory存储引擎文件数据都存储在内存中,如果mysqld进程发生异常,重启或关闭机器这些数据都会消失。所以memory存储引擎中的表的生命周期很短,一般只使用一次。

ARCHIVE

该存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。

MVCC(Multi-Version Concurrency Control)

即多版本并发控制,

待整理:https://mp.weixin.qq.com/s?__biz=MzA5ODM5MDU3MA==&mid=2650868213&idx=1&sn=f94a5d7a5bbc6b0a9bddfad12f8fb15b&chksm=8b67eeb0bc1067a621e55c474576d33a5958bb8422b78b5b1524c892365bc1ea3f74a5348ef5&scene=0&xtrack=1&key=041bb01ba83758f9ce9b371c617156c1b94fa183a5e0869ac0a7fbb2f99efddfd67600991f11fb6859780fff551bc9a440e3c5f95ecb9c84aed0b36b90c3bacff9f1a69d071cb410247c2a7bdac07421f4ec594c2d1d5c94223052140c6508fc01bab1ad11716b19655180acb1421e821de421431dac6a7236631c9dd6596b66&ascene=1&uin=MzQ5MzgxMTE1&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=AV%2B%2FCEodl0fSQt5ewpUrUE8%3D&pass_ticket=g4cb6noZyzF1Rv%2FzPgJBh%2BqXNT1fVd7RHF9ks9i1yum2yqmjco%2FyN%2B5rHm8lqKxq&wx_header=0

如何避免长事务对业务的影响?

从应用开发和数据库两个角度回答