免费注册 查看新帖 |

Chinaunix

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

【讨论】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
21 [报告]
发表于 2012-04-28 15:02 |只看该作者
action08 发表于 2012-04-28 14:57
锁表是业务需要,等表也是业务需要,跟引擎性能没有关系吧


关于调度和锁定:改变语句的执行优先级
,或者使用延长插入、并发插入这块,欢迎分享线上案例

论坛徽章:
0
22 [报告]
发表于 2012-04-28 15:08 |只看该作者
线上服务器对于MYISAM和INNODB的优化是完全不同的,比如一些参数的优化:
MYISAM参数
key_buffer_size
query_cache_size
INNODB优化参数
innodb_buffer_pool_size
innodb_log_file_size
innodb_flush_method
innodb_flush_log_at_trx_commit
innodb_max_dirty_pages_pct
innodb_log_buffer_size
innodb_thread_concurrency
innodb_additional_mem_pool_size
query_cache_size
在线上需要非常注意这些参数的优化。

论坛徽章:
0
23 [报告]
发表于 2012-04-28 15:11 |只看该作者
回复 20# 小版主杀手


    这个是表出现损坏被重启以后那个更改文件属性的操作才会受影响的。这个不是追究谁的问题,只是在以后的工作中要想办法如何来规避类似错误的发生。

论坛徽章:
0
24 [报告]
发表于 2012-04-28 15:17 |只看该作者
多机房部署的话,黑洞引擎blockhole引擎比较适合做二进制日志的同步,详情可以参考下面的帖子。
使用blockhole存储引擎过滤复制的binlog
http://space.itpub.net/51862/viewspace-180656

论坛徽章:
0
25 [报告]
发表于 2012-04-28 17:26 |只看该作者
我先回答第1点:"Mysql支持的引擎有哪些?各有哪些特性?如何查看哪些引擎可用?";
Mysql支持的引擎有哪些?
答:常见的有innodb/myisam/myisam Merge/memory/NDBCluster/Blackhole,其他的像/Falcon/CSV/Federated/SolidDB很少见。

各有哪些特性?
答:
MYISAM不支持事务,表锁,支持并发插入(这对大部分都是插入与查询的应用很有用)。不适合用在读写并重的场合。只有索引存于内存。其他数据利用操作系统缓存。容易崩溃,需要经常修复.
INNODB支持事务,行锁,利用MVCC多版本控制机制实现可重复读。也是5.1后续版本的默认引擎。innodb_buffer_pool既容纳索引,也容纳数据。如果数据能全部加载到内存,读写速度是非常快的。不易崩溃。
MYISAM Merge 属于MYISAM中的一个特例,常说的分区就是使用这个引擎。优缺点跟MYISAM一样。
MEMORY 俗称内存表。默认索引是Hash索引(支持不唯一索引),排序方式是按照Hash值排序的,不是按列值(详细的可以了解Hash索引)。支持Btree,需要手动指定。服务重启后数据会丢失,只保留表结构。对于表中的varchar动态列,是按照最大长度固定长度保存的。不支持text,blob数据类型。这两个属性决定了,为什么有时候临时表会以磁盘的方式进行保存数据,而且为什么需要为列定义适合的最小长度。
NDBCluster支持事务,行级锁,但比较难理解,实际应用中我没用到,所以不便多说,建议另查资料。
Blackhole,支持事务,利用MVCC实现可重复读。主要特点是不保存数据,如果开启了二进制,只会向二进制文件中写入日志。主要用来在一般的主从结构中间插入一层将两层结构变成三层结构,它做为主节点的从节点,同时做为其它从节点的主节点。利用replicate-do-db,replicate-do-table等配置,过滤掉不需要同步的数据库或表。减少节点之间的数据传输。

如何查看哪些引擎可用?
答:登陆进去,运行show engines;会看到support列,YES代表当前版本支持哪些引擎,NO代表不支持哪些引擎,DEFAULT代表默认的表引擎。
先就说这些,欢迎指教。

论坛徽章:
0
26 [报告]
发表于 2012-04-28 17:55 |只看该作者
本帖最后由 龙雪刚 于 2012-05-02 09:53 编辑

我再说下第三点:"线上优化Mysql,配置Mysql存储引擎。"
因为我喜欢INNODB,公司所使用的都是INNODB,MYISAM经验不多。我只说下INNODB的一些优化,MYISAM的还希望其他人补充。先说硬件。
前提:mysql服务中所有表引擎都是INNODB
首先,在开始选择硬件配置时,主要需要考虑CPU,内存,磁盘,网卡。
总会有人问是选择多CPU好,还是速度快的好。一般而言,选择快的CPU比多个CPU。对于CPU密集的负载,MYSQL通常从更快的CPU中获益,而不是更多的CPU。因为单个查询只会用到一个CPU。建议不要超过8核,多了根本用不到。
内存,因为INNODB可以将数据,索引同进加载到buffer_pool中,所以内存大的肯定好些,以防频繁添加内存。而且现在内存都比较便宜。专门的服务器一根8G的内存条也就800块。不贵。多多益善。
磁盘,先从容易说,现在容量都是按T来算了,小的还没有。最好组成硬件RAID10.它集成了RAID0与RAID1的所有优点。
网卡,千兆的没话说。
再说一下文件系统,这点我没有什么好建议,一直用的是ext3,也知道现在有ReiserFS,XFS等,也知道它在崩裂后文件系统检查花费的时间要短一些,但没试过。其他人如果有什么好的建议,可以多多交流。

评分

参与人数 1可用积分 +2 收起 理由
小版主杀手 + 2 赞一个!

查看全部评分

论坛徽章:
0
27 [报告]
发表于 2012-04-28 18:42 |只看该作者
一直在用,没有去总结心得。

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
28 [报告]
发表于 2012-04-29 00:12 |只看该作者
1.Mysql支持的引擎有哪些?各有哪些特性?如何查看哪些引擎可用?
答:mysql支持的引擎有:
1)myisam ,这种引擎不支持事务,特点查询更新都速度快,特别是select count(*) ;mysql5.5之前,是默认存储引擎,缺点是易损坏,一般支持到一千万条时,查询速度下降很厉害,
2)innodb ,这种引擎支持事务,能够保证增删改的操作完整性,查询修改速度比较慢,只有这个是支持外键和事务,外键对于数据的合理性控制和检查是非常好的
3)memory,在mysql4之前交heap,把表完全建立在内存中,支持btree和hash两种索引,表大小受制于内存大小,
4) BDB,支持BerkeleyDB,这个没有用过不是很清楚
5)csv,这个测试过,可以把csv文件作为数据,增删改查效率不高
6)MERGE,这个是myisam的表集合,用于把按天分开的几个表当成一张表进行处理。
查看存在的引擎使用命令
show engines;

2.Mysql引擎的线上应用场景,如何为业务选择合适的引擎?
1)查询次数非常多,而更新比较少例如,公司主页,门户网站可以使用myisam,适合于逻辑简单,或者统计数据
2)修改比较频繁,或者对于事务完整性要求严格的话,使用innodb
3)对于关系非常复杂的系统最好用innodb,因为它支持外键和事务


3.线上优化Mysql,配置Mysql存储引擎。
1)对于myisam的话,需要根据系统环境,加大索引或者缓存空间大小,
2)对于innodb的话,需要设置正确的日志刷新频率,若是频率太高则影响性能,频率太低则掉电会损失数据多,加大缓冲池

论坛徽章:
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
29 [报告]
发表于 2012-04-29 10:55 |只看该作者
小版主杀手 发表于 2012-04-28 15:02
关于调度和锁定:改变语句的执行优先级
,或者使用延长插入、并发插入这块,欢迎分享线上案例


我是java开发工程师

很少接触数据库,手头没有案例的说

论坛徽章:
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
30 [报告]
发表于 2012-04-29 10:58 |只看该作者
我没有看出mysql引擎性能低下,平时跑得蛮快的说

可是为什么有的人锁表用得不好,就骂mysql引擎不行呢??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP