• 系统默认表
    读书笔记-mysql王者
  • mysql远程连接方法: mysql -u root -p 123456 -P 3306 -h 192.168.20.6
  • 用户权限:分为root和其他用户,root用户要避免web连接
  • query cache:生产中建议关闭,因为只缓存静态数据,如果数据经常读写作用不大
    SHOW VARIABLES LIKE '%query_cache_size%'
    SHOW VARIABLES LIKE '%query_cache_type%'
  • Innodb存储结构
    InnoDb主要分为表空间,段,区和页
    读书笔记-mysql王者
    SHOW VARIABLES LIKE '%innodb_autoextend_increment%' 初始自动化扩展值为64m
    SHOW VARIABLES LIKE '%innodb_data%'
    默认为12M读书笔记-mysql王者
    段:每个段由N个区和32个零散页组成
    读书笔记-mysql王者
    区:由连续的页组成,是物理上连续的一段空间,每个区固定大小是1MB
    页:读书笔记-mysql王者
  • 内存结构: 分为SGA(系统全局区)和PGA(程序缓存区)
    读书笔记-mysql王者

读书笔记-mysql王者

  • 各大线程及其作用
    读书笔记-mysql王者
    读书笔记-mysql王者
  • 内存刷新机制
    读书笔记-mysql王者
  • 数据库文件
    读书笔记-mysql王者

1.禁止用字符型做主键
2.禁止无主键或唯一索引的表出现
3.主要数据类型:整型,浮点型,字符类型和日期类型

  • 整型:
    读书笔记-mysql王者
    读书笔记-mysql王者
    int和tinyint用的最多
    主键要选择不经常修改的,尽量与业务无关的,没有具体含义的字段
    因为Innodb是索引组织表,需要保证索引结构不经常翻转,避免造成性能损耗
    读书笔记-mysql王者
    如果要显示0003这样,显示宽度的值,需要加上zerofill,不然的话,int(1)和int(10)都是一样的
  • 浮点型:生产环境不建议使用float和double,因为是属于不精确的类型,一般使用decimal类型
    读书笔记-mysql王者
    读书笔记-mysql王者
    读书笔记-mysql王者
  • 时间类型
    读书笔记-mysql王者
    读书笔记-mysql王者

TIMESTAMP
4个字节储存;值以UTC格式保存;.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

DATETIME
8个字节储存;实际格式储存;与时区无关;datetime 以'YYYY- MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037

INT
存时间戳。占用资源少,查询速度快。条件范围搜索使用between没什么问题。查询条件自由拼接。
datetime和timestamp相对于int来说也有一个小小的好处,就是对于时间类型来说,可以有一系列的时间函数可以用.

  • 字符串类型
    读书笔记-mysql王者
    读书笔记-mysql王者
    推荐使用int保存ip地址
    读书笔记-mysql王者

  • 字符集: mysql5.7推荐使用utf8mb4

  • 表delete导致的碎片:
    读书笔记-mysql王者

  • 索引种类:
    主键索引和唯一索引:
    读书笔记-mysql王者


读书笔记-mysql王者
前缀索引:
读书笔记-mysql王者
读书笔记-mysql王者
eg: alter table x_test add index(x_name(4));
联合索引: 使用过程需要满足最左前缀原则,一般把选择性高的列放前面
eg:
读书笔记-mysql王者
读书笔记-mysql王者
用不到索引:
读书笔记-mysql王者
哈希索引:
读书笔记-mysql王者

  • Innodb锁类型:
    读锁:一个事务获取了数据行的读锁,另外一个事务能获取读锁,但是不能获得写锁
    读书笔记-mysql王者

写锁: 一个事务获取了写锁,其他事务就不能获取该行的其他锁,写锁优先级最高
读书笔记-mysql王者
MDL锁:
读书笔记-mysql王者
意向锁:
读书笔记-mysql王者

  • Innodb行锁种类
    读书笔记-mysql王者
  • Innodb的行锁是加载索引上的,如果索引删除了,会变成对所有行上锁
  • 间隙锁: SELECT * FROM x_test WHERE id <4145026 LOCK IN SHARE MODE; 在小于这个范围的值都会被锁定
  • 记录锁和间隙锁组合: SELECT * FROM x_test WHERE id <4145026 for update 在这条记录和小于这条记录的范围都会被锁定

mysql备份

  • 根据运行状态,可以分为热备和冷备,热备分为逻辑备份和裸文件备份,按照备份后内容分为全量备份和增量备份
    读书笔记-mysql王者
    冷备: 直接将数据文件复制到新的地方
    读书笔记-mysql王者
    热备:
    1.myslqdump:
    单表备份: mysqldump --single-transaction -uroot -p123456 demo test > test.sql
    单表恢复: mysql -uroot -p123456 demo < test.sql
    读书笔记-mysql王者
  1. select ... into outfile
    读书笔记-mysql王者
    导出: 必须要指定目录(show global variables like '%secure_file_priv%';) select * from test into outfile '/var/lib/mysql-files/a.sql';
    导入: load data infile '/var/lib/mysql-files/a.sql' into table test;
    load data的插入速度是insert的12倍
    3.mydumper
    读书笔记-mysql王者
    4.裸文件备份:XtraBackup 直接复制低等数据文件备份,备份时不会锁表

主从复制

读书笔记-mysql王者
读书笔记-mysql王者

  • 一般企业用到的mysql集群
    读书笔记-mysql王者

相关文章:

  • 2021-07-26
  • 2021-08-16
  • 2022-12-23
  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-10
  • 2021-12-23
  • 2021-04-04
  • 2021-07-22
  • 2021-09-02
相关资源
相似解决方案