mysql优化 个人笔记 非礼勿扰 -m02
1. processlist
功能:查看连接数
注意:自己创建连接 一定要关闭连接!!
现在项目都用数据源 这个基本不用自己管(DBCP,c3p0,Druid(https://github.com/alibaba/druid),HiKariCP)
字段说明
- List item
- id : sessionId
- user:操作用户
- host:操作主机 端口
- db: 操作的数据库
- command: 表示命令类型
- info:表示详细的sql语句
- time:表示相应命令执行时间
- state:表示命令执行状态
schema 与数据类型优化
1. 数据类型的优化
更小的通常更好
他们占用更少的磁盘、内存、cpu缓存
并且处理时cpu周期更少
但是需要注意 不要低估数据存储值的范围(字段过小会截断错误)
可以设置不同的类型 插入数据测试(数据存储大小直接看数据文件 )windows环境下 mysql的data 目录下
frm后缀是表结构idb后缀是数据文件 idb 引擎就是 innoDB
如果不是idb 是MYD MYI 引擎就是MyISAM
MYD 是数据文件 MYI是索引文件简单就好
简单数据类型的操作,通常更少的数据周期- 整型比字符串操作代价更低 因为字符集和校对规则 字符串比整型更复杂
- 使用mysql自建类型 而不是字符串 存储日期和时间
- 用整型存储IP INET_ATON(‘192.168.2.1’) – > 数字
- INET_NTOA(数字) --> IP地址
尽量避免使用NULL
- 如果查询中包含null的列,对mysql来说很难优化
- 因为null使得索引、索引统计、和值的比较更加复杂
- null 改为not null 性能提升比较小 所以没必要都改 只是在设计的时候注意 尽可能不为null
实际细则
- 整数类型 (尽可能满足需求最小的数据类型)
- TYNYINT (8位存储空间)
- SMALLINT(16位存储空间)
- MEDIUMINT(24位存储空间)
- INT(32位存储空间)
- BIGINT(64位存储空间)
- 字符 & 字符串类型
char
- 固定长度
- 最大长度255
- 会自动删除末尾空格
- 检索效率、写效率 比varchar高 以空间换时间
- 应用场景:
a. 存储长度波动不大的数据 如:md5摘要
b.存储短字符串 经常更新的字符串
varchar 根据实际内容长度保存数据
- 使用最小符合需求的长度
- varchar(n) n<255 使用额外一个字节保存长度
n>255 使用额外两个字节保存长度 - varchar(5) 和 varchar(255) 保存同样的内容
硬盘存储空间是一样的,但是内存空间占用不同,是指定的大小
- varchar在5.6之前 变更长度 或者从255一下变更到255以上之后 就会导致锁表
- 应用场景:
a.存储长度波动比较大的数据 比如文章
b. 字符串很少更新的场景,内次更新后都会重算并使用额外存储空间保存长度
c.适合保存多字节字符 汉字 特殊字符 等
TEXT BLOB
MySQL 会把每个BLOB 和 TEXT 当做一个对象来独立处理
两者都是为了存储很大数据而设计的字符串类型
Text 存储字符串
Blob 存储二进制datetime
- 占用8个字节
- 与时区无关 数据库底层时区配置 对datetime无效
- 可保存到毫秒
- 可保存事件范围大
- 不要使用字符串存储日期 (占用空间大 损失日期类型函数的便捷性)
timestarmp
- 占用4字节
- 时间范围1970-01-01 到 2038-01-19
- 精确到秒
- 采用整形存储
- 依赖数据库设置时区
- 自动更新timestarmp列的值
date
- 占3个字节
- 使用date类型 还可以利用日期时间函数进行日期之间的计算
- date类型用于保存 1000-01-01 到 9999-12-21之间的日期
用枚举类型替代字符串
-- 创建表 create table enum(id enum('aaa','bbb','ccc') not null ) -- 插入数据 insert into enum(id) values ('aaa')insert into enum(id) values ('bbb'),('ccc')-- 查询 结果虽然是aaa bbb ccc select * from enum -- 结果是1 2 3 他是整形数据存储的 select 0+id from enum -- 排序 与创建表的时候 定义的顺序有关系 按照定义顺序来的 select id from enum order by id;
字段最好指定长度
- 整数类型 (尽可能满足需求最小的数据类型)
mysql优化 个人笔记 非礼勿扰 -m02相关推荐
- mysql优化 个人笔记 非礼勿扰 -m04
1. 索引干啥的 加快查询效率!! 帮助mysql高效获取数据结构 2. 索引怎么用 -- 添加索引 ALTER TABLE `test` ADD INDEX `n_uid_title` (`uid` ...
- mysql优化 个人笔记 非礼勿扰 -m07
Mysql基本架构图 两种优化方式 RBO 基于规则优化 CBO 基于成本优化 这个用的多 Mysql 日志 1. binlog (server) 数据库data目录下的binlog文件 show V ...
- mysql优化 个人笔记 非礼勿扰 -m08
binlog 简单使用 数据恢复 1. 查看binlog状态 show variables like '%log%'; 2. 打开binlog vim /etc/my.cnf[mysqld] # bi ...
- mysql优化 个人笔记 非礼勿扰 -m05
一 .树 树是一种递归数据结构,包含一个或多个数据节点的集合 其中一个节点被定为树的根,而其余节点被称之为根的子代. 除根节点以外的其他节点均被划分为多个非空集合,其中每个集合都称为子树 节点与节点之 ...
- mysql优化 个人笔记 非礼勿扰 -m06
索引分类 1.主键索引 主键是一种唯一索引,但他必须制定为PRIMARY KEY ,每个表只能有一个主键(一个主键指的不是一个列 也可能有多个列联合主键) 其实主键没有的话 数据库会根据唯一键 建立索 ...
- mysql优化 个人笔记 - 非礼勿扰 -m17
上一篇讲到了 datadir.socket.pid_file.port.default_storage_engine.skip-grant-tables.character_set_client.ch ...
- mysql优化 个人笔记 - 非礼勿扰 -m16
一 . 服务器参数设置 vim /etc/my.conf 1. 通用设置 #数据文件存放目录 datadir=/var/lib/mysql # mysql.socket表示server和client在 ...
- mysql优化 个人笔记 非礼勿扰 -m03
数据源连接池 1. druid 地址 https://github.com/alibaba/ -> https://github.com/alibaba/druid 右侧有菜单 通用配置 htt ...
- mysql优化 个人笔记 (mysql 进阶索引 ) 非礼勿扰 -m14
查询优化 1. 查询慢的可能原因 网络 CPU (时间片) IO (磁盘) 上下文切换 (线程切换) 系统调用 生成统计信息 锁等待时间 2. 优化数据访问 查询性能低的主要原因是访问的数据太多,某些 ...
最新文章
- Python中最好用的命令行参数解析工具
- extremeComponents(ec)源码分析
- 2-RabbitMQ核心概念及AMQP协议
- 字符串驻留机制截图?#注意回顾字符串的深浅拷贝小数据池那节
- .NET和JAVA的比较- 体系结构
- Python对命令提示符cmd以及操作系统的一些操作
- ndows外壳公用dll,Windows外壳公用DLL已停止工作
- mysql根据出生年月计算年龄
- 三相逆变器双pi控制器参数如何调节_光伏逆变器MPPT基本原理李星硕
- #后疫情时代的新思考#AI助力,“无接触”服务加速金融数字化转型丨数据猿公益策划...
- 训练赛 Discrete Logarithm Problem
- MySQL数据库--韩顺平老师课
- 掌握销售谈判三大策略,开单成功率提升60%!
- 各种群体寻优算法的比较
- 劳务派遣员工转正制度是什么
- IDEA启动报错Plugin Error Problems found loading plugins: Plugin “GlassFish Integration“ was not...
- processon画类图和时序图
- 解决nrm ls命令没有*(星号)的问题
- Jessi-开源项目知识点
- npm命令配置淘宝镜像
热门文章
- google高级语法
- Cloudera Manager安装CDH6教程-(二)搭建Cloudera和CDH6
- linux硬盘安装deepin,如何安装Deepin Linux?Deepin Linux安装体验
- @Transactional注解
- CASS与ArcGIS结合人为配准影像的办法
- 推出新软件的一些最佳做法
- 近5年安徽省高考状元名单,全部被北大清华录取
- warning C6011: dereferencing NULL pointer <name>
- AccessControlException: Permission denied: user=Frankie, access=WRITE,
- 【Linux】centos创建用户以及赋予sudo权限