zoukankan      html  css  js  c++  java
  • Mysql常见的优化策略

    数据库设计方面优化

    1、数据库设计符合第三范式,为了查询方便可以有一定的数据冗余。
    2、选择数据类型优先级 int > date,time > enum,char>varchar > blob,选择数据类型时,可以考虑替换,如ip地址可以用ip2long()函数转换为unsign int型来进行存储。
    3、对于char(n)类型,在数据完整的情况下尽量较小的的n值。
    4、在建表时用partition命令对单个表分区可以大大提升查询效率,MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用,分区方式为:
      CREATE TABLE tablename{
      }ENGINE innodb/myisam CHARSET utf8 //选择数据库引擎和编码
      PARTITION BY RANGE/LIST(column),//按范围和预定义列表进行分区
      PARTITION partname VALUES LESS THAN /IN(n),//命名分区并详细限定分区的范围

    5、选择数据库引擎时要注意innodb 和 myisam的区别。
      存储结构:MyISAM在磁盘上存储成三个文件。而InnoDB所有的表都保存在同一个数据文件中,一般为2GB
      事务支持:MyISAM不提供事务支持。InnoDB提供事务支持事务。
      表锁差异:MyISAM只支持表级锁。InnoDB支持事务和行级锁。
      全文索引:MyISAM支持 FULLTEXT类型的全文索引(不适用中文,所以要用sphinx全文索引引擎)。InnoDB不支持。
      表的具体行数:MyISAM保存有表的总行数,查询count(*)很快。InnoDB没有保存表的总行数,需要重新计算。
      外键:MyISAM不支持。InnoDB支持

  • 相关阅读:
    linux sqlite replace into
    编译原理
    什么是协程
    从源码解析Nginx对 Native aio支持_运维_youbingchen的博客-CSDN博客 https://blog.csdn.net/youbingchen/article/details/51767587
    SSL_ERROR_WANT_READ
    阻塞事务提交
    nysql 定时器
    __init__ raises an exception, then __del__ will still be called
    int ping = 11; 限流 客户端验证与服务端是连接的
    四元组一样
  • 原文地址:https://www.cnblogs.com/clubs/p/10306350.html
Copyright © 2011-2022 走看看