msql优化

一、MyISAM优缺点

优点:

1.能够快速查询唯一键

2.支持全文索引

3.选择count(*)的速度很快

4.磁盘空间占用小

缺点:

1.表级别锁定,如果写入操作的总时间占到5%以上,则表锁定会减慢应用程序的速度

2.不支持事务,没有”开始=>提交/中止“能力

3.有持久性问题,表崩溃可能需要冗长的修复操作才能使其恢复联机

二、InnoDB优缺点

优点:

1.支持事务,可以放弃和回滚查询,崩溃不会导致数据损坏

2.具有行级锁定,并发写入同一表的不同行不会被序列化

3.支持全部ACID功能的版本控制

4.支持多种联机备份策略

5.提高应用程序在高负载,大量连接下的并发能力

6.支持外键和引用完整性约束

缺点:

1.count(*)的速度慢

2.没有全文索引

3.自动递增字段必须是表中的第一个字段,当迁移的时候可能会导致问题

4.占用更多磁盘空间

5.一些简单查询的速度可能低于MyISAM,但复杂的,多表查询速度则超过MyISAM

三、存储引擎选择

选择MyISAM:

1.当应用程序执行大部分是读取操作时(大于95%)

选择InnoDB:

1.当事务性和一致性非常重要,即ACID很重要

2.有多表链接的复杂模式

3.当不间断操作非常重要时

四、优化InnoDB

16G内存数据库服务器为例:

1.innodb_file_per_table:默认情况是,InnoDB为每个数据库创建一个文件并用这个文件来管理数据库的表。设置该选项,则使InnoDB对每个表使用一个独立的数据存储文件。如果想在现有数据库上更改此设置,应该备份数据库,然后删除它,再更改选项,然后重新启动服务器,最后从备份中重新导入到该数据库

(数据库文件存在my.cnf中datadir指定的路径中,一般后缀是.frm)

2.innodb_buffer_pool_size:如果只使用innoDB表,70%内存即可,若混合使用innoDB和MyISAM,则减少一点,给MyISAM留些空间

3.innodb_log_buffer_size=4M即可,若有很多文本字段或blob字段或记录很大,则可以提高一些

4.innodb_log_file_size=256M,推荐值

5.innodb_flush_log_at_trx_commit=2,该项控制将日志文件刷新到磁盘的频率。若容忍崩溃时丢失记录,可以设为2来减少磁盘写入的频率,减少IO

(参考自《高性能php应用开发》人民邮电出版社)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值