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   companion  阅读(174)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示