索引数据结构

https://www.cs.usfa.edu

索引数据结构
1.二叉树
2.红黑树
3.Hash表
4.B-Tree
5.B+Tree 非叶子节点不存储data,只存储索引,可以放更多的索引。顺序访问指针,提高区间访问性能。

MySQL索引底层支持两种:Hash和B+Tree

MyISAM
索引文件和数据文件是分离的,非聚集索引。
frm 表结构
MYD 行数据
MYI 索引文件

InnoDB索引实现(聚集索引)
1)表数据文件本身是按B+tree组织的一个索引结构文件
2)聚集索引-叶子结点包含了完整的数据记录
3)InnoDB表必须有主键,并且推荐使用整形的自增主键
(UUID vs 整型, 整型所需索引空间小,消耗的磁盘空间小,可以存放更多的索引,同时数据比较时更快)
4)非主键索引结构叶子结点存储的是主键值 (一致性和节省存储空间)

MySQL 备份

MySQL 备份

1、备份命令

格式:

mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql

例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword –database cmdb > /data/backup/cmdb.sql

2、备份压缩

导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 | gzip > 文件名.sql.gz

例如: mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword –database cmdb | gzip > /data/backup/cmdb.sql.gz

3、备份同个库多个表

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 表1 表2 …. > 文件名.sql

例如 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql

4、同时备份多个库

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –databases 数据库名1 数据库名2 数据库名3 > 文件名.sql

例如:mysqldump -h192.168.1.100 -uroot -ppassword –databases cmdb bbs blog > /data/backup/mutil_db.sql

5、备份实例上所有的数据库

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –all-databases > 文件名.sql

例如:mysqldump -h192.168.1.100 -p3306 -uroot -ppassword –all-databases > /data/backup/all_db.sql

6、备份数据出带删除数据库或者表的sql备份

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –add-drop-table –add-drop-database 数据库名 > 文件名.sql

例如:mysqldump -uroot -ppassword –add-drop-table –add-drop-database cmdb > /data/backup/all_db.sql

7、备份数据库结构,不备份数据

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql

例如:mysqldump –no-data –databases db1 db2 cmdb > /data/backup/structure.sql