免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 小版主杀手
打印 上一主题 下一主题

【讨论】Mysql存储引擎之生产应用(获奖名单已公布) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-04-28 11:29 |只看该作者
1,innodb和myisam 用过,NDB侧过,
2,innodb 和myisam 有太多的不一样:
    物理:  myisam 和innodb 表定义都是frm 文件, myisam 的索引和数据分开存放,分别为myi和myd,innodb 则有表空间的概念,而表空间又可以用共享和独享表空间2中,另外innodb维护了1组redo日志,用于保证已提交事务的完整性。为了支持顺序写,减少随机IO。innodb 在启动时就将生成日志和表空间。
   索引,2者常用都是btree的,但是innodb 优化使用了btree索引,在叶子节点增加了指向邻叶子节点的指针,另外innodb的表的存放方式是以聚簇索引的形式,即本身就是btree,另外2者的除主键外的其他索引不相同,innodb除了myisam的索引以外,另外还有一个指向主键的指针。
   内存  myisam 只能把索引以块的方式存放在内存中,而数据文件则将给操作系统级的缓存,innodb 则将索引和数据都存储进innodb_buffer ,另外在事务进行的同时在写log_buffer ,在得到触发条件时写进redo日志组。

典型:innodb 支持事务,使用间隙表的方式来实现行锁,在过滤条件不好的情况下依然会表锁,另外innodb 维护MVCC,用于给于读不阻塞
          myisam 不支持事务,因为使用mysql级别的表锁,所以并发相对较差,但是myisam支持了并发插入,支持全文索引。





还有太多不同,打字太累,我要<<mysql高效编程>>谢谢

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
12 [报告]
发表于 2012-04-28 11:42 |只看该作者
wlforyou1 发表于 2012-04-28 10:09
我先占下位子。。。真的很想参与讨论,可是对这个话题一点都不懂。好伤心。


可以说下自己实际遇到的问题或者使用心得嘛  呵呵

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
13 [报告]
发表于 2012-04-28 11:53 |只看该作者
expert1 发表于 2012-04-28 10:47
想要《mysql高效编程》
常用的engine有Innodb/myisam


关于MyISAM引擎,在设计表时又有几种情况: 1.静态MyISAM:如数据表中的数据列的长度都是预先固定好的,服务器将自动选择这种表类型。2.动态MyISAM:如数据表中出现varchar、BLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table 命令或优化工具来进行碎片整理.
3.压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。--这个没测试过

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
14 [报告]
发表于 2012-04-28 11:56 |只看该作者
Gray1982 发表于 2012-04-28 10:54
现在用的一般不会超过3种引擎


现在也有用MyISAM和内存表混合使用的案例
如:高频读且没有php层面的缓存(比方说少了memcacahe类似的三方缓存)的时候

论坛徽章:
0
15 [报告]
发表于 2012-04-28 14:46 |只看该作者
回复 10# expert1


    每个引擎都有自己适合的场景,不是说innodb就一定好,也不是说MYISAM就一定不好,呵呵。MYISAM在写入不频繁的时候其实还是很有优势的,尤其是数据量不是很大,又经常需要获取表的总记录数的时候。

论坛徽章:
0
16 [报告]
发表于 2012-04-28 14:50 |只看该作者
回复 13# 小版主杀手


    进步神速啊,呵呵!

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
17 [报告]
发表于 2012-04-28 14:51 |只看该作者
飞鸿无痕 发表于 2012-04-28 14:50
回复 13# 小版主杀手


呵 太抬举了

论坛徽章:
0
18 [报告]
发表于 2012-04-28 14:53 |只看该作者
在使用MYISAM的时候需要考虑表会经常损坏的问题,最好定期地执行optimize table tablename。下面是生产环境遇到MYISAM表坏情况的一篇博文:
http://blog.chinaunix.net/uid-20639775-id-3029949.html

评分

参与人数 1可用积分 +2 收起 理由
小版主杀手 + 2 感谢分享

查看全部评分

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
19 [报告]
发表于 2012-04-28 14:57 |只看该作者
expert1 发表于 2012-04-28 10:47
想要《mysql高效编程》
常用的engine有Innodb/myisam


锁表是业务需要,等表也是业务需要,跟引擎性能没有关系吧

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
20 [报告]
发表于 2012-04-28 14:58 |只看该作者
飞鸿无痕 发表于 2012-04-28 14:53
在使用MYISAM的时候需要考虑表会经常损坏的问题,最好定期地执行optimize table tablename。下面是生产环境 ...


文件的属主都变成了www---引起这个的原因,查到了吗后来
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP