外键
- 使用条件
- 两张表必须是InnoDB表,MyISAM表暂不支持
- 外键列必须建立索引,MYSQL4.1.2后自动创建索引
- 外键关系的两个表的列数据类型必须是相似的
- 好处
- 保证数据的一致性和一些级联操作
例子
create table busi_table(
busi_id char(13) not null primary key,
busi_name char(13) not null,
repo_id char(13) not null,
foreign key(repo_id) references repo_table(repo_id))
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)
即多版本并发控制,
如何避免长事务对业务的影响?
从应用开发和数据库两个角度回答