楼主: pipihappy8888

话题讨论:开源数据库MySQL知多少?

[复制链接]
认证徽章
论坛徽章:
127
茶鸡蛋
日期:2012-01-16 14:24:41鲜花蛋
日期:2012-06-06 14:48:18双黄蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上加薪
日期:2014-03-18 09:57:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11
发表于 2014-3-6 14:36 | 显示全部楼层
lzd_7993 发表于 2014-3-5 20:38
2选用mysql公司基于成本考虑,mysql是开源。oracle价格是比较昂贵的。一般互联网网站居多。
3、关键还是看 ...

InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2014-3-6 15:23 | 显示全部楼层
下个月就要进入这个行业了。刚才看了下试读,已经在京东上买了一本。

使用道具 举报

回复
论坛徽章:
0
发表于 2014-3-6 15:44 | 显示全部楼层
pipihappy8888 发表于 2014-3-6 14:07
楼上三根香什么时候烧完啊?

hey,奶茶喝完没有,浇点奶茶就灭了。。

使用道具 举报

回复
论坛徽章:
0
发表于 2014-3-6 15:54 | 显示全部楼层
备份策略一是直接拷贝文件,备份较快,但是备份时数据仍可写入。适合能短时间停机的数据库。
备份策略二是使用mysqlhotcopy,这个工具只能备份MYISAM表。但是比mysqldump要快。如今大量使用innodb作为存储引擎,这个工具的使用量较少。
备份策略三是最常用的一种备份方式。提供了丰富的参数,可以在线备份。备份后可以方便的建立slave库。缺点是恢复过程较慢。
备份策略四是主从复制,由于是近乎实时的复制,操作危险命令(drop,truncate等)时从库的数据也相应改变。主从复制搭配mysqldump是目前较常用的一种方案。

使用道具 举报

回复
论坛徽章:
15
生肖徽章2007版:猪
日期:2009-03-11 15:09:30优秀写手
日期:2013-12-18 09:29:11比亚迪
日期:2013-08-28 12:44:17复活蛋
日期:2013-06-19 15:03:392013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15奥运会纪念徽章:手球
日期:2012-08-28 17:54:31奥运会纪念徽章:柔道
日期:2012-08-14 16:26:23咸鸭蛋
日期:2012-08-14 16:26:232010广州亚运会纪念徽章:射击
日期:2012-08-14 16:26:23
发表于 2014-3-6 16:41 | 显示全部楼层
目前一半一半mssql和mysql,觉得mySQL 优势可能就是开源免费吧,单台性能和收费商业数据库差的不是一点,
MySQL对设计的要求较高,架构上的灵活性需要牺牲多台服务器来填补,如果业务上需要出复杂报表的同学,真心要慎重考虑

使用道具 举报

回复
论坛徽章:
6
双黄蛋
日期:2013-01-19 21:40:412013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-03-29 13:13:22马自达
日期:2013-07-30 12:48:55保时捷
日期:2013-09-23 22:22:27技术图书徽章
日期:2014-01-26 14:23:57
发表于 2014-3-6 16:58 | 显示全部楼层
4.InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。而MyISAM 是MySQL中默认的存储引擎,它基于更老的ISAM代码,但有很多有用的扩展。您觉得InnoDB和MyISAM有哪些区别?在选择存储引擎上需要考虑哪些问题?

InnoDB已经是主流引擎了,MyIsam除非有些特别需求对性能方面,不然没有理由在使用MyISAM了。

5.谈谈试读《MySQL管理之道:性能调优、高可用与监控》章节后您的感想。
试读章节简单的说明了下新特性,对应官方手册来讲解,整本书的基调就是入门级的。

使用道具 举报

回复
论坛徽章:
3
2014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02优秀写手
日期:2014-03-12 06:00:13
发表于 2014-3-6 17:29 | 显示全部楼层
正在使用....

使用道具 举报

回复
论坛徽章:
3
2013年新春福章
日期:2013-02-25 14:51:24秀才
日期:2015-11-23 10:17:19秀才
日期:2016-02-18 10:08:14
发表于 2014-3-6 17:47 | 显示全部楼层
2.淘宝为什么要放弃Oracle,而选择MySQL呢?大家平常都用MySQL来干些什么事情?

     实际环境用了1年多了。以我来看,Mysql的优势在于精巧,体积小,易于部署和管理,互联网大部分使用的mysql主要是用于电商,功能基本都能满足,多余的功能留着也没用。Oracle来说比较大,很多功能其实用不到的。衍生出一点比较好的,Oracle大多是使用上的大牛,mysql更偏重理解(理解了自然好处多)。
     基本除了一些参数处理后的传递,以及一些类似汉字转拼音之类的不好做之外。数据处理基本都可以使用mysql来处理,字符串之类的自然不在话下。跑得哇啦哇啦的。一句话:excel公式能做的货(图标可不算哦),基本喜欢导入数据库做处理。

使用道具 举报

回复
认证徽章
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
发表于 2014-3-6 21:46 | 显示全部楼层
1.麻雀虽小五脏俱全,MySQL虽然以简单著称,但其内部结构并不简单。相比于之前的版本,您觉得MySQL 5.5引入了哪些重要的新特性?如何做好SQL语句的优化?如何合理利用索引?

MySQL 5.5引入了哪些重要的新特性?
(1) 1. 默认存储引擎更改为InnoDB。
(2) 多核性能提升
Metadata Locking (MDL) Framework替换LOCK_open mutex (lock),使得MySQL5.1及过去版本在多核心处理器上的性能瓶颈得到解决,官方表示将继续增强对MySQL多处理器支持,直至MySQL性能 “不受处理器数量的限制”
(3) 复制功能(Replication)加强
MySQL复制特性是互联网公司应用非常广泛的特性,作为MySQL最实用最简单的扩展方式,过去的异步复制方式已经有些不上形势,对某些用户 来说“异步复制”意味着极端情况下的数据风险,MySQL5.5将首次支持半同步(semi-sync replication)在MySQL的高可用方案中将产生更多更加可靠的方案。另外Slave fsync tunning;Relay log corruption recovery和Replication Heartbeat也将实现
(4) 增强表分区功能
MySQL 5.5的分区对用户绝对是个好消息,更易于使用的增强功能,以及TRUNCATE PARTITION命令都可以为DBA节省大量的时间,有时对最终用户亦如此:
        1) 非整数列分区:任何使用过MySQL分区的人应该都遇到过不少问题,特别是面对非整数列分区时,MySQL 5.1只能处理整数列分区,如果你想在日期或字符串列上进行分区,你不得不使用函数对其进行转换。很麻烦,而MySQL 5.5中新增了两类分区方法,RANG和LIST分区法,同时在新的函数中增加了一个COLUMNS关键词。在MySQL 5.1中使用分区另一个让人头痛的问题是date类型(即日期列),你不能直接使用它们,必须使用YEAR或TO_DAYS转换这些列,但在MySQL 5.5中情况发生了很大的变化,现在在日期列上可以直接分区,并且方法也很简单;

  2) 多列分区:COLUMNS关键字现在允许字符串和日期列作为分区定义列,同时还允许使用多个列定义一个分区;

  3) 可用性增强:truncate分区。分区最吸引人的一个功能是瞬间移除大量记录的能力,DBA都喜欢将历史记录存储到按日期分区的分区表中,这样可以定期 删除过时的历史数据。 但当你需要移除分区中的部分数据时,事情就不是那么简单了,删除分区没有问题,但如果是清空分区,就很头痛了,要移除分区中的所有 数据,但需要保留分区本身,你可以:使用DELETE语句,但我们知道DELETE语句的性能都很差。使用DROP PARTITION语句,紧跟着一个EORGANIZE PARTITIONS语句重新创建分区,但这样做比前一个方法的成本要高出许多。MySQL 5.5引入了TRUNCATE PARTITION,它和DROP PARTITION语句有些类似,但它保留了分区本身,也就是说分区还可以重复利用。TRUNCATE PARTITION应该是DBA工具箱中的必备工具;

  4) 更多微调功能:TO_SECONDS:分区增强包有一个新的函数处理DATE和DATETIME列,使用TO_SECONDS函数,你可以将日期/时间列转换成自0年以来的秒数,如果你想使用小于1天的间隔进行分区,那么这个函数就可以帮到你。


(5)Insert Buffering 如果在buffer pool中没找到数据,那么直接buffer起来,避免额外的IO;Delete & Purge Buffering 跟插入一样,如果buffer pool中没有命中,先buffer起来,避免额外的IO。

(6) Support for Native AIO on Linux


如何做好SQL语句的优化?
(1)字段类型尽量用int或者tinyint类型,另外varchar字段尽量用''取代null。
(2)select * 尽量少用,你想要什么字段 就select 什么字段出来 不要老是用* 号!同理,只要一行数据时尽量使用 LIMIT 1
(3)尽量避免使用order by rand(),因为这个可能会导致mysql的灾难。
(4)每个表应该设置一个ID主键,最好是int类型
(5)对于写,尽量用简单的sql,严禁批量insert,update,以及delete操作。
(6)分页的时候,先查询第一条的主键id比如是78654,然后再where之后用id>78654。
(7)不要用永久链接 mysql_pconnect();除非你真的非常肯定你的程序不会发生意外,不然很可能也会导致你的mysql死掉。
(8)尽量用 union all 代替 union。
(9)尽量用exists取代in,用join取代子查询。
(10)尽量优先优化高并发的 SQL,而不是执行频率低某些“大”SQL。
(11)还可以通过慢查询日志分析,sql执行监控等手段去进一步筛选可优化的sql。


如何合理利用索引?
(1)不设置外键,在经常进行join的字段上建立索引
(2)在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
(3)在值唯一性越高的列上建立索引,比如唯一性最高的主键。
(4)如果group以及sort的列有多个,那么就建立组合索引。
(5)使用percona的工具来check索引的有效性,如果失效就可以rebiuld它
(6)在字段建立索引最后都可以自动加上主键id字段(如果id是自增字段)


2.淘宝为什么要放弃Oracle,而选择MySQL呢?大家平常都用MySQL来干些什么事情?
根据taobao内部DBA的消息,主要是阿里巴巴想建立一套属于自己的系统,不再依赖于外部服务提供商,mysql免费只是其中一部分原因并不是主要原因。
我们公司的Mysql用来做用户帐号交易数据存储还有cache和token缓存。


3.在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。MySQL常见的备份有四种,备份策略一:直接拷贝数据库文件;备份策略二:使用mysqlhotcopy备份数据库;备份策略三:使用mysqldump备份数据库;备份策略四:使用主从复制机制(replication),请从数据库规模以及应用的角度,谈谈您对这四种备份的认识。
首先解释一个误区,主从机制不适备份,这是数据冗余的一种。

策略一和策略二适用于myisam存储引擎。
策略三适用于所有存储引擎,不过mysqldump会全锁表,而且增量备份只能结合binlog来做。
策略四其实不是备份的一种,因为前3种都可以给予策略四上的从库来操作。

个人觉得策略四应该说实时在线备份机制比如mydumper以及xtrabackup等





4.InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。而MyISAM 是MySQL中默认的存储引擎,它基于更老的ISAM代码,但有很多有用的扩展。您觉得InnoDB和MyISAM有哪些区别?在选择存储引擎上需要考虑哪些问题?
他们的主要区别在于,
(1)innodb支持事务而myisam不支持事务
(2)还有一个行锁一个表锁
(3)InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行, select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的
(4) 对AUTO_INCREMENT的操作, MyISAM为INSERT和UPDATE操作自动更新这一列。对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
(5) 构成上区别,每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型,基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB(据说在64位上不一样)。

选择上:根据业务来,一般对数据一致性有要求的电子商务以及游戏行业都用innodb,而移动互联网,小规模金融业务等对一致性要求不高的可以采用myisam。



5.谈谈试读《MySQL管理之道:性能调优、高可用与监控》章节后您的感想。

innodb_io_capacity,这个参数可以对IO产生效果,回去尝试一下。
200    单盘SAS/SATA
2000   SAS*12 RAID 10
5000   SSD
500000 FUSION-IO

这一章,可关闭自适应哈希索引,这个写的比较好,还有半同步这个比较不错,里面有几个性能图,根据性能图来分析,详细生动。






























使用道具 举报

回复
认证徽章
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
发表于 2014-3-6 21:54 | 显示全部楼层
meridian-line 发表于 2014-3-6 17:58
4.InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且 ...

好戏在后头,这才刚刚抛砖引玉呢

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表