MySQL学习笔记(Day006:存储引擎二/多实例安装)
@(MySQL学习)
[TOC]
一. MyISAM存储引擎(下)
1. MyISAM还在使用的原因
- 历史原因,需要逐步替换
- 部分如User,DB等系统表(MyISAM引擎),可以直接拷贝,比较方便
- 性能好,或者存储小
不是
MyISAM的优点,也不是存在的原因
2. MyISAM文件组成
frm
表结构文件MYI
索引文件MYD
数据文件- 数据文件是堆表数据结构,堆是无序数据的集合
MYI
中的叶子节点,指向MYD
中的数据页- 当数据移动到页外时,需要修改对应指针
3. myisamchk
myisamchk
通过扫描MYD文件来重建MYI文件;如果MYD文件中某条记录有问题,将跳过该记录
二. Memory存储引擎
1. Memory介绍
- 全内存存储的引擎
- 数据库重启后数据丢失
- 支持哈希索引
- 不支持事物
###2. Memory特性
千万不要用Memory存储引擎去做缓存(Cache)
, 性能上不及Redis和Memcahced- Memory
不能禁用
,当涉及内部排序操作的临时表时,使用该存储引擎max_heap_table_size
决定使用内存的大小,默认时16M
- 无论该表使用的什么引擎,只要使用到临时表,或者指定Memory,都受参数影响
- 当上面设置的内存放不下数据时,(>=5.6)转为MyISAM,(>=5.7)转为InnoDB
- 注意磁盘上临时路径空间的大小(
tmpdir
)
- 注意磁盘上临时路径空间的大小(
- 内存使用为会话(SESSION)级别,当心内核OOM
- 支持哈希索引,且仅支持等值查询
1 | mysql> show global status like "%tmp%tables"; |
3. Memory的物理特性
- 内存不会一次性分配最大空间,而是随着使用逐步增到到最大值
- 通过链表管理空闲空间
- 使用固定长度存储数据
- 不支持BLOB和TEXT类型
- 可以创建自增主键
三. CSV存储引擎
1. CSV介绍
- CSV - Comma-Separated Values,使用逗号分隔
- 不支持特殊字符
- CSV是一种标准文件格式
- 文件以纯文本形式存储表格数据
- 使用广泛
2. CSV文件组成
frm
表结构CSV
数据文件CSM
元数据信息
2. CSV特性
- MySQL CSV存储引擎运行时,即创建CSV
文件
- 通过MySQL标准接口来查看和修改CSV文件
- 无需将CSV文件导入到数据库,只需创建相同字段的表结构,拷贝CSV文件即可
- CSV存储引擎表每个字段
必须是NOT NULL
属性
四.Federated存储引擎
1. Federated介绍
- 允许本地访问远程MySQL数据库中表的数据
- 本地不存储任何数据文件
- 类似Oracle中的DBLink
- Federated存储引擎默认不开启, 需要在
my.cnf
的[mysqld]
标签下添加federated
- MySQL的Federated不支持异构数据库访问,MariaDB中的
FederatedX
支持
2. Federated 语法
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
CONNECTION='mysql://username:password@hostname:port/database/tablename'
1 | -- |
五. 多实例安装
1. 多实例介绍
- 一台服务器上安装多个MySQL数据库实例
- 可以充分利用服务器的硬件资源
- 通过mysqld_multi进行管理
2. 安装要求
MySQL实例1 -
mysql1
- port = 3306
- datadir = /data1
- socket = /tmp/mysql.sock1
MySQL实例2 -
mysql2
- port = 3307
- datadir = /data2
- socket = /tmp/mysql.sock2
MySQL实例3 -
mysql3
- port = 3308
- datadir = /data3
- socket = /tmp/mysql.sock3
MySQL实例4 -
mysql4
- port = 3309
- datadir = /data4
- socket = /tmp/mysql.sock4
该三个参数必须定制,且必须不同 (port / datadir / socket)
server-id
和多数据库实例没有关系,和数据库复制有关系。
3. 安装操作
1 | # |
1 | # |
1 | [root@MyServer ~]> mysqld_multi start |
1 | -- |
六. Federated测试
1 | -- |
1 | -- |
1 | # |
1 | mysql> show variables like "port"; |