Schema设计时主要考虑:标准化,数据类型,索引.html
一个数据库设计能够混合使用,一部分表格标准化,一部分表格非标准化.(非标准化表格适当冗余)mysql
最优的数据类型,使表在磁盘上占据的空间尽量小,读写快,占用内存少.(索引也尽可能创建在较小的列上)sql
正确索引,提升Select,Update,Delete性能.数据库
不一样的Sql不一样的优化方案缓存
Explain Sql查看结果,分析查询.安全
查询使用匹配的类型.服务器
使用long-slow-queries记录较慢查询,分析优化.并发
安装适当的MySql版本. 若是服务器使用Intel处理器,使用Intel C++版本可提升30 %效率数据库设计
配置优化. 常见优化项:高并发
charset
max_allowed_packet
max_connections
table_cache_size
query_cache_size
MyISAM
引擎特色
不支持事务,提供高速存储,检索以及全文搜索能力.
宕机会破坏表.
使用的磁盘和内存空间小.
基于表的锁,并发更新数据会出现严重性能问题.
MySql只缓存索引,数据由OS缓存.
使用状况
日志系统.
只读操做或者大部分读操做.
全表扫描.
批量导入数据.
没有事务的低并发读写.
优化策略
NOT NULL,能够减小磁盘存储.
Optimize Table,碎片整理,回收空闲空间.
Deleting/updating/adding大量数据的时候禁止使用index.
参数优化,key_buffer_size_variable索引缓存设置.
避免并发Inset Update.
InnoDB
引擎特色
具备提交,回滚和崩溃恢复能力的事务安全存储引擎.
处理巨大数据量性能卓越,它的CPU使用效率很是高.
须要更多的内存和磁盘存储空间.
数据和索引都缓存在内存中.
适用状况
须要事务的应用.
高并发的应用.
自动恢复.
较快速的基于主键的操做.
优化策略
尽可能使用short,integer的主键.
使用prefix keys,由于InnoDB没有key压缩功能.
参数优化,innodb_buffer_pool_size,innodb_data_home_dir等等.
Redis
Memcached
转自: http://overtrue.me/articles/2014/10/mysql-performance-optimization-summary.html