Mysql基础底层
MYSQL的一些基础底层
1. 数据库应用的分类
一类是OLTP:在线事务处理,如博客、电子商务、网络游戏;
另一类OLAP:在线分析处理,如数据仓库、数据集市; 对于OLAP的应用,分区的确可以很好的提高查询的性能;
2. MYSQL的慢查询
通过 long_query_time 设置阈值,默认是10,代表10秒; 默认情况下,mysql并不启动慢查询日志,需要手工设置 log_slow_queries设置为ON开启慢查询日志。
3. InnoDB存储引擎表类型
在InnoDB存储引擎表中,每张表都有一个主键,如果在创建表时没有显示地定义主键,则InnoDB存储引擎会按如下的方式选择创建主键。
- 寻找加了unique约束并且不为NULL的列设为主键。
如果没有,把row_id作为主键
- InnoDB在每行记录都添加了三个隐藏字段
- DB_ROW_ID —6个字节:行的标识;
- DB_TRX_ID —6个字节:新增更新行的最后一个事务ID,自动递增(创建版本号,数据库的乐观锁相似);
- DB_ROLL_PTR —7个字节:回滚指针(删除版本号)
- InnoDB在每行记录都添加了三个隐藏字段
4. MYSQL分区
1. 分区类型
- range(范围)
- list(离散、不连续)
- hash(散列)
- key
- 子分区 –在分区的基础上进行分区
- 关键字 subpartitions
- 子分区数量必须相同
- 关键字 subpartitions
- columns分区
2. 创建方式
create table `table_name`(
a int,b int
)engin=innodb
partition by key(b)
partition 4;
另外在MYSQL数据库中还支持一种称为linear hash的分区,他使用一个更加复杂的算法来确定新行插入已经分区表中的位置。
create table `table_name`(
a int,b int;
)engin=innodb
partition by linear hash(b)
partition 4; ---指定分区数
linear hash 的优点在于,增加、删除,合并和拆分将变得更加快捷,有利于处理含有大量数据的表;
他的缺点在于与使用hash分区得到的数据相比,各分区数据的分布可能不太均衡。
- 上一篇: SpringBoot结合antd组件Upload实现文件上传
- 下一篇: 常见算法的实现