xiaobaif 2020-05-27
MySQL 是单进程多线程的
MySQL执行过程
连接器,管理连接,权限验证
查询缓存
分析器,词法分析,语法分析,语法树,检查语法是否有错误
预处理器,进一步检查解析树是否合法,如表名是否存在等
优化器,选择索引,生成执行计划
执行器,操作引擎,返回结果,并将结果缓存
如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、mysql库中的系统表,其查询结果都不会被缓存。比如函数NOW()或者CURRENT_DATE()。查询缓存系统会跟踪查询中涉及的每个表,如果这些表(数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效。任何的查询语句在开始之前都必须经过检查,即使这条SQL语句永远不会命中缓存。如果查询结果可以被缓存,那么执行完成后,会将结果存入缓存,也会带来额外的系统消耗
默认页为16KB
自增达到最大值,再插入会报错
mysql5.6,提供了线上修改表结构的功能,会自动创建新表,将旧表的数据复制到新表中,只有当前被复制的记录会被上锁,旧表可以执行其他任务,对旧表的操作记录到日志中,复制完后对新表执行同样的操作,然后用新表替换旧表。
docker
创建容器
dk run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v c:/Users/Administrator/test_docker/mysql/data:/var/lib/mysql -d mysql
进入容器
dk exec -it mysql /bin/bash
进入mysql
mysql -uroot -p123456
修改字符集编码
mysql配置文件my.ini,
default-character-set=utf8
character-set-server=utf8
help show 查看show命令的帮助
show status 查看状态
show character set 查看字符集