Mysql调优-1数据类型的优化

一、mysql的3层结构

大部分操作是分析器和优化器里面执行的;

 二、mysql操作:

 1.查看mysql的版本号

 2.mysql -uroot -p->输入密码

 3.执行某条sql命令,执行后再执行show profiles;、

show profile;(最近一条)

show profile for query 2;(query_id);

show profile all;

 三、

查看mysql端口号:

登录mysql,执行sql语句:  show global variables like 'port'; 

mysql仅允许本机访问修改解决方案:

https://blog.csdn.net/m0_37460012/article/details/90290148?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

创建数据库temp和表tmp1以及tmp2;tmp1中的id使用的是int(4),int存储4个字节;tmp2中的id使用的是smallint(4),smallint存储2个字节;

程序代码:

public static void main(String[] args){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://ip:port/temp","user","pwd");
PreparedStatement ps = conn.prepareStatement("insert into tmp2 values(?,?)");
for(int i=0;i<=2605;i++){
ps.setInt(1,i);
ps.setString(2 ,i+"");
ps.addBatch();
}
ps.executeBatch();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

存储引擎为innodb:

tmp1.frm: 当前存储的表结构文件

tmp1.ibd:当前存储的数据文件

存储引擎为myISAM:

.frm:当前存储的表结构文件

.MYD:当前存储的数据文件

.MYI:当前存储的索引文件

int存储字节为4字节;smallint存储字节为2字节

每个表中都存放了2606个数据;

 

 

 查询表tmp1和表tmp2中id=99的记录并比对查询时间:

 

 

 

 

 

 不同的数据格式,查询时间是不一致的,应该使用对应的类型来查询;例如时间就使用Date类型;

四、mysql的数据类型

show profile : https://www.cnblogs.com/developer_chan/p/9231761.html

mysql中提供转ip的函数 INET_NTOA('255.255.255.255')对应ip的最大值,变成整型;
INET_NTOA('')
数据库存储的话是整型还是字符串?整型存储的空间占用少;
尽量使用满足需求的最小数据类型;
1.字符串:
  一般使用char和varchar类型就可以了;
  varchar(5)与varchar(255)保存同样的内容,硬盘存储空间相同,但内存空间占用不同,是指定的大小。
  解释:
    大小和占用空间大小不同-磁盘预读
    int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据;
    varchar(M) M表示的是varchar类型数据在数据库中存储的最大长度,超过则不存
    一般对于BLOB和TEXT:存储太大的字符串的时候,存放在文件中,然后文件地址保存到数据库中;

2.时间:
  时间类型的选择关系到精度
  datetime/timestamp/date
  timestamp和date涉及到时区;

3.枚举:
  例如性别,存储0,1之后转换为男女,转换的工作可以在mysql中完成;
  create table enum_test(sex enum('male','female','uncertain') default 'uncertain');
  insert into enum_test(sex) values('female');

  create table enum_test(sex enum('male','female','uncertain') default 'uncertain');

  insert into enum_test(sex) values('female');

     insert into enum_test(sex) values('male');

       insert into enum_test(sex) values('uncertain');

 

posted on 2020-06-12 10:47  companion  阅读(170)  评论(0编辑  收藏  举报