1. 程式人生 > >Mysql常見的優化策略

Mysql常見的優化策略

mysq 行存儲 tab isam 差異 命令 var mys 一個數

數據庫設計方面優化

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支持

Mysql常見的優化策略