mysql 分析表结构_转使用procedure analyse()分析mysql给出的关于表结构的优化建议...
菜鸟时代的我们当初在接到项目分析设计mysql数据库时,或多或少会借鉴于一些成熟的开源项目的数据库设计。
比如设计sns系统数据库时我们有可能会根据自己的数据库知识同时分析借鉴uchome的库结构,一个经典的例子是我在设计论坛数据库时借鉴了dz的帖子表主题表的某些字段冗余的思想,以及大字段水平拆分概念;当初并不知道为什么,更不理解有些甚至背离了数据库设计范式。随着知识的增长概念性,实际情况都在变化。慢慢的知道了一些基础知识
(这里我要推荐一本很好的mysql的书:简朝阳先生的《mysql性能调优与架构设计》,当然我只是泛读了一遍,等待深入研究中)
回归标题要说的内容,我们在设计表时有时候总会思考到底某个字段选用什么类型呢。跨过菜鸟级的phper会有相当的经验直接啪啪啪敲出来,其实我们 在后期调优时也可以使用 procedure analyse();分析表结构看看mysql给我们的字段建议,综合实际情况调整一些字段的类型(这个已经很琐碎了,一般应用都到不了这么细,并且我们 鉴于经验设计的数据库基本都能满足应用。我这里只是了解到了这些知识给自己做个记录而已)。
procedure analyse();语法如下
select column from table_name procedure analyse();
以下引用一段文章:
PROCEDURE ANALYSE 通过分析select查询结果对现有的表的每一列给出优化的建议。
PROCEDURE ANALYSE的语法如下:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements (默认值256) analyze查找每一列不同值时所需关注的最大不同值的数量.
analyze还用这个值来检查优化的数据类型是否该是ENUM,如果该列的不同值的数量超过了
max_elements值ENUM就不做为建议优化的数据类型。max_memory(默认值8192) analyze查找每一列所有不同值时可能分配的最大的内存数量
样例程序
------------------------------------------------------------------------------------
mysql> DESC user_account;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| USERID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| USERNAME | varchar(10) | NO | | NULL | |
| PASSSWORD | varchar(30) | NO | | NULL | |
| GROUPNAME | varchar(10) | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> select * from user_account PROCEDURE ANALYSE(1)\G;
*************************** 1. row ***************************
Field_name: ibatis.user_account.USERID
Min_value: 1
Max_value: 103
Min_length: 1
Max_length: 3
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 51.7500
Std: 50.2562
Optimal_fieldtype: TINYINT(3) UNSIGNED NOT NULL
*************************** 2. row ***************************
Field_name: ibatis.user_account.USERNAME
Min_value: dfsa
Max_value: LMEADORS
.........................................................
---------------------------------------------------------------------------------------
从第一行输出我们可以看到analyze分析ibatis.user_account.USERID列最小值1,最大值103,最小长度1,
最大长度3...,并给出了改字段的优化建议:建议将该字段的数据类型改成TINYINT(3) UNSIGNED NOT NULL。
当然以上的东西都很基础,只是我关于近期以及之前所获知识的一个简单总结,记录;大牛们就不要笑话我了,我才刚开始起步
mysql 分析表结构_转使用procedure analyse()分析mysql给出的关于表结构的优化建议...相关推荐
- 使用procedure analyse()分析mysql给出的关于表结构的优化建议
菜鸟时代的我们当初在接到项目分析设计mysql数据库时,或多或少会借鉴于一些成熟的开源项目的数据库设计. 比如设计sns系统数据库时我们有可能会根据自己的数据库知识同时分析借鉴uchome的库结构,一 ...
- mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳
数据库是一个只要从事后端开发,就永远离不开的技术,大部分企业选择的数据库都是MySQL,所以需要我们对MySQL有着足够的了解. 而MySQL索引,我们都知道提高性能要加索引,也知道索引的结构是B-T ...
- mysql delete 会锁表吗_我想进大厂之 MYSQL 夺命连环13问
来源 | 科技缪缪 想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里? 能说下 myisam 和 innodb 的区别吗? myisam引擎是5.1版本之前的默认引擎, ...
- mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!
我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...
- mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库
表索引异常,修复msql表索引(表引擎:myisam) myisamchk --safe-recover /usr/local/mysql/data/ename_news/dede_arccache ...
- mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)
1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」
连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加. 连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表. 连 ...
- mysql数据库开发经历_六年开发经验,整理Mysql数据库技巧笔记,全网最详细的笔记集合!...
数据库 表 DML DQL 多表查询 内连接查询 外连接查询 子查询 将一条查询语句作为一张虚拟表 Mysql约束 主键约束 特点:主键约束默认包含非空和唯一两个功能. 一张表只能有一个主键. 主键一 ...
- mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL
本文概括了网络上众多常用MySQL命令,讲述过程详细明了. 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口, ...
最新文章
- NLP之TFTS读入数据:TF之TFTS读入时间序列数据的几种方法
- ABAP--关于重复行的处理
- MATLAB中的wavedec、wrcoef函数简析
- WCF添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。...
- 深度学习 训练吃显卡_在深度学习中喂饱GPU
- JavaScript ES2021 新特性解析
- javascript鼠标拖拽的那些事情
- java8 时间加一秒_Java8中新增的日期和时间API
- 品《阿里巴巴大数据实践-大数据之路》一书(上)
- 将Map转换成List
- 我的世界MinecraftJava版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器
- 精准广告投放 —— 业务概念知识
- RMAN-06091 no channel allocated for maintenance
- 程序员每天自动填写周报日报工时脚本完整脚本(附源码)
- vue 数组 unshift push shift pop
- 南京信息工程大学第二届程序设计大赛团队赛:L-三元对
- 批量修改DNS记录的TTL值
- Gephi (网络分析软件) 下载、安装及简单使用
- linux git忘记密码,Linux下 保存 git账号密码
- 硬件电路入门---电阻2
热门文章
- SourceTree历史版本下载地址
- Computer Vision_33_SIFT:Object recognition from local scale-invariant features——1999
- 【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-002(Caesar)
- 设置word只读模式的三种方式,分别如何取消只读模式?
- 一起来捉妖超强辅助脚本 轻松获取妖灵快速升级攻略
- prometheus+alertmanager实现CPU、内存、磁盘的监控报警
- mysql no wait_MySQL 8.0新特性 -- nowait以及skip locked
- # Jackson 学习使用
- sap一个项目如何对应多个服务器,SAP ERP连接多台PI系统配置
- java开发模拟退火算法解决函数最值!