mysql myisam 优点_mysql引擎Innodb和Myisam对比介绍和优缺点

一.myisam引擎

1.mysql默认引擎,不支持事务*

2.表级锁定,更新时,锁定机制是整张表被锁定,其它连接无法更新表的数据,效率比较低下.锁的机制成本很少,但大大降低了并发性能*

3.读写互相阻塞,写的时候阻塞读,读的时候也阻塞写,但读与读之间不阻塞*

4.只对索引进行缓存,虽然key_buffer可以大幅提高性能,减少磁盘IO,但对数据不缓存

5.适合读业务比较多的生产环境,比如BLOG等,读的速度比较快.

6.占用资源比较少.服务器硬件不好时.可以考虑使用

7.数据恢复没有innodb引擎恢复的完美

8.支持全文索引,不支持外键约束

二.mysiam引擎应用场景:

1.不需要事务支持的场景,读数据多的网站.

2.并发相对较低的业务,因为表级锁定的机制限制

3.数据修改相对较少的业务.阻塞问题

4.对数据要求一致性不高的业务.

三.myisam引擎优化:

1.尽量索引,缓存机制

2.调整读写优先级

3.启用延迟插入.

4.生产环境应用memcache缓存的多.Mysql本身的缓存为用少

四.innodb引擎

1.支持事务,四个级别的事务

2.锁定机制一般是行级锁定.更新时只锁定当前行,其它的行.没关系,可以继续读写.全表扫描.还是表锁*

3.读写阻塞与事务的隔离相关,读取速度一般*

4.可以缓存数据和索引,高效的缓存特性

5.支持分区,表空间.

5.适合读写业务比较多的环境,比如BBS等.一般的生产环境,也推荐用innodb.效率高

6.服务器资源开销大

8.支持外键约束,不支持全文索引.

五.innodb应用场景

1.需要事务支持的业务

2.适合高并发的业务,行级锁定.对高并发有很好的适应能力.但要确定查询是通过索引完成.

3.数据更新比较频繁的场景.如BBS

4.数据一致性要求较高

5.硬件设备内存较大时,可以利用innodb较好的缓存能力来提高内存利用率.尽可能的减少磁盘IO

六.innodb调优

1.my.cnf中参数

[root@ser200 3306]# grep -i "innodb" my.cnf

default_table_type = InnoDB

innodb_additional_mem_pool_size = 4M

innodb_buffer_pool_size = 32M            #Innodb核心参数,生产环境会给的很大.16G内存,双实例,会给2G的缓存

innodb_data_file_path = ibdata1:128M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 2M

innodb_log_file_size = 4M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = 0

生产环境16G内存服务器调优实例:

default_table_type = InnoDB

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 2048M            #Innodb核心参数,生产环境会给的很大.16G内存,双实例,会给2G的缓存

innodb_data_file_path = ibdata1:1024M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 16M

innodb_log_file_size = 128M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = 0

生产环境设置好参数,不怎么会改动上面的参数.主要是SQL语句的调优,改上面参数作用有限.最核心优化是每个语句走索引

2.主键尽可能小.包括索引

3.尽量避免全表扫描.因为会造成表锁

4.尽量缓存所有的数据和索引,提高响应速度,减少磁盘IO消耗

发现:数据库核心调优.让用户尽量去缓存上找数据,到内存找数据,少到磁盘上找数据.

5.大批量小插入,尽量自己控制事务,而不要使用autocommit自己提交

6.合理设置flush_log_at_trx_commit,不要过份追求安全性.

你有可能还对以下内容感兴趣:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值