auto commit

This commit is contained in:
CyC2018
2018-03-06 11:17:27 +08:00
parent 65fe30f23f
commit 5608f55f36
18 changed files with 546 additions and 546 deletions

View File

@ -74,23 +74,23 @@ MyISAM 设计简单,数据以紧密格式存储,所以在某些场景下性
## 3. InnoDB 与 MyISAM 的比较
**事务**
**事务**
InnoDB 是事务型的。
**备份**
**备份**
InnoDB 支持在线热备份。
**崩溃恢复**
**崩溃恢复**
MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。
**并发**
**并发**
MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
**其它特性**
**其它特性**
MyISAM 支持全文索引,地理空间索引。
@ -120,7 +120,7 @@ VARCHAR 会保留字符串末尾的空格,而 CHAR 会删除。
MySQL 提供了两种相似的日期时间类型DATATIME 和 TIMESTAMP。
**DATATIME**
**DATATIME**
能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间。
@ -128,7 +128,7 @@ MySQL 提供了两种相似的日期时间类型DATATIME 和 TIMESTAMP。
默认情况下MySQL 以一种可排序的、无歧义的格式显示 DATATIME 值例如“2008-01-16 22:37:08”这是 ANSI 标准定义的日期和时间表示方法。
**TIMESTAMP**
**TIMESTAMP**
和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年。
@ -208,7 +208,7 @@ SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5;
对于 BLOB、TEXT 和 VARCHAR 类型的列,必须使用前缀索引,只索引开始的部分字符。
对于前缀长度的选取需要根据 **索引选择性** 来确定:不重复的索引值和记录总数的比值。选择性越高,查询效率也越高。最大值为 1 ,此时每个记录都有唯一的索引与其对应。
对于前缀长度的选取需要根据 **索引选择性** 来确定:不重复的索引值和记录总数的比值。选择性越高,查询效率也越高。最大值为 1 ,此时每个记录都有唯一的索引与其对应。
### 3.3 多列索引
@ -246,12 +246,12 @@ customer_id_selectivity: 0.0373
因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。
**优点**
**优点**
1. 可以把相关数据保存在一起,减少 I/O 操作;
2. 因为数据保存在 B-Tree 中,因此数据访问更快。
**缺点**
**缺点**
1. 聚簇索引最大限度提高了 I/O 密集型应用的性能,但是如果数据全部放在内存,就没必要用聚簇索引。
2. 插入速度严重依赖于插入顺序,按主键的顺序插入是最快的。
@ -351,33 +351,33 @@ do {
# 分库与分表
**1. 分表与分区的不同**
**1. 分表与分区的不同**
分表,就是讲一张表分成多个小表,这些小表拥有不同的表名;而分区是将一张表的数据分为多个区块,这些区块可以存储在同一个磁盘上,也可以存储在不同的磁盘上,这种方式下表仍然只有一个。
**2. 使用分库与分表的原因**
**2. 使用分库与分表的原因**
随着时间和业务的发展,数据库中的表会越来越多,并且表中的数据量也会越来越大,那么读写操作的开销也会随着增大。
**3. 垂直切分**
**3. 垂直切分**
将表按功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立商品数据库 payDB、用户数据库 userDB 等,分别用来存储项目与商品有关的表和与用户有关的表。
**4. 水平切分**
**4. 水平切分**
把表中的数据按照某种规则存储到多个结构相同的表中,例如按 id 的散列值、性别等进行划分,
**5. 垂直切分与水平切分的选择**
**5. 垂直切分与水平切分的选择**
如果数据库中的表太多,并且项目各项业务逻辑清晰,那么垂直切分是首选。
如果数据库的表不多,但是单表的数据量很大,应该选择水平切分。
**6. 水平切分的实现方式**
**6. 水平切分的实现方式**
最简单的是使用 merge 存储引擎。
**7. 分库与分表存在的问题**
**7. 分库与分表存在的问题**
(1) 事务问题
@ -393,21 +393,21 @@ do {
## 1. 故障转移
**1.1 提升备库或切换角色**
**1.1 提升备库或切换角色**
提升一台备库为主库,或者在一个主-主复制结构中调整主动和被动角色。
**1.2 虚拟 IP 地址和 IP 托管**
**1.2 虚拟 IP 地址和 IP 托管**
为 MySQL 实例指定一个逻辑 IP 地址,当 MySQL 实例失效时,可以将 IP 地址转移到另一台 MySQL 服务器上。
**1.3 中间件解决方案**
**1.3 中间件解决方案**
通过代理,可以路由流量到可以使用的服务器上。
<br><div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//fabd5fa0-b75e-48d0-9e2c-31471945ceb9.jpg"/> </div><br>
**1.4 在应用中处理故障转移**
**1.4 在应用中处理故障转移**
将故障转移整合到应用中可能导致应用变得太过笨拙。