博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库性能优化
阅读量:4030 次
发布时间:2019-05-24

本文共 739 字,大约阅读时间需要 2 分钟。

字段设计

  1. 尽量使用数字型,比字符型快;如果0-200,使用tinyint unsigned更好
  2. 尽量不要使用NULL,除非必要使用NOT NULL + DEFAULT替代
  3. 少用text和image,二进制字段的读写比较慢
  4. 使用int代替varchar(15)来存储IP地址
  5. 使用MySQL内建的类型(date,time,datetime等)而不是字符串来存储日期和时间
  6. 建议只分配真正需要的空间
  7. 考虑使用BIGINT代替DECIMAL,将需要存储的值根据小数的位数乘以相应的倍数即可

 

sql优化

  1. explain优化sql
  2. limit获取唯一行,避免扫描整张表
  3. 避免使用select*
  4. 保证连接的索引是相同的类型
  5. 不要使用by rand()命令
  6. 采用join来替换子查询
  7. 小心使用通配符

 

索引

  1. 根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。
  2. 把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。
  3. 一个表不要加太多索引,因为索引影响插入和更新的速度。

 

其他:

  1. MyISAM和InnoDB的选择
  2. MyISAM不支持事务,InnoDB是事务类型的存储引擎
  3. MyISAM只支持表级锁,BDB支持页级锁和表级锁默认为页级锁,而InnoDB支持行级锁和表级锁默认为行级锁
  4. MyISAM引擎不支持外键,InnoDB支持外键
  5. MyISAM引擎的表在大量高并发的读写下会经常出现表损坏的情况

对于count()查询来说MyISAM更有优势;InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

 

 

 

 

 

转载地址:http://kfhbi.baihongyu.com/

你可能感兴趣的文章
关于智能运维(AIOps)的学与思
查看>>
关于问答系统(Q&A)、对话系统(Chatbot)的学与思
查看>>
关于信息检索(IR)、搜索引擎的学与思
查看>>
关于广告、推荐中的CTR的学于思
查看>>
文本分类
查看>>
自然语言处理中的Attention机制
查看>>
pbc 的使用
查看>>
luasocket 安装遇到的问题
查看>>
lua读写redis的环境部署
查看>>
Using MIT-Scheme in MacOS X on the Command Line
查看>>
php redis 接口说明
查看>>
cocos2dx使用lua和protobuf
查看>>
lua5.2 可能会遇到的一些错误
查看>>
C语言编译过程
查看>>
stirling formula prove
查看>>
关于数字类型转化为整型的方法
查看>>
PHP 常用正则表达式整理
查看>>
自然计算
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>