mysql8 可以说是一个质的飞越。增加了很多新特性,以及提高了各方面的速度。增加了开窗函数
Ⅱ InnoDB增强
自增列方面
自增列方面。现在自增列计数器会在每次值修改时,将值写到REDO LOG中,并且在CHECKPOINT时写到存储引擎私有的系统表中。
这就消除了以往重启实例自增列不连续的问题(这也可能形成了一个新的竞争点(盖国强会上提问InnoDB开发者))。
Btree索引方面
Btree索引被损坏。InnoDB会向REDO LOG中写入一个损坏标志。同时也会CHECKPOINT时将内存中损坏页的数据记录到存储引擎私有的系统表中。
这也就促成了恢复时。两边一致的情形。索引不可用,并不会造成实例起不来。这很大程度上降低了之前使用innodb_force_recovery和innodb_fast_shutdown的必要。
提升了一致性。(对于一般DBA来说透明,知道有这么回事就好)
NoSQl *** 作
InnoDB memcached插件支持多个get *** 作(在单个memcached查询中获取多个键/值对)
和范围查询。(个人认为这个挺牛逼,有点像NoSQL,不仅仅是NoSQL)。
需要安装daemon_memcached插件,其中多了一个innodb_memcache schema,这个schema中有几张表,其中一张containers用来与InnoDB表之间做映射,,
然后通过接口访问Innodb表。然后会有一个11211的端口打开,用于建立连接。
好处是通过减少客户端和服务器之间的通信流量,在单个memcached查询中获取多个键/值对的功能可以提高读取性能。
对于InnoDB来说,也意味着更少的事务和开放式表 *** 作。
死锁检测
新的动态配置选项innodb_deadlock_detect可用于禁用死锁检测,默认打开。 在高并发系统上,当大量线程等待相同的锁时,死锁检测会导致速度下降。 有时,在死锁发生时,
禁用死锁检测并依赖innodb_lock_wait_timeout设置进行事务回滚可能更有效。记得之前版本遇到死锁会自动回滚。以下截图来自MySQL5.7,与8.0默认相同。
(也就是说即便MySQL5.7也是有死锁检测的,并且自动回滚权重较小的事务(套死除外))。
尝试更改innodb_deadlock_detect参数为OFF。则遇到死锁时两个工作线程都会被堵塞。直到innodb_lock_wait_timeout设定的锁超时。
新的INFORMATION_SCHEMA.INNODB_CACHED_INDEXES表保存了Innodb索引缓存在Innodb buffer pool中的页数。
现在,所有InnoDB临时表都将在共享临时表空间ibtmp1中创建。
加密特性
支持REDO和UNDO表空间加密。
共享锁方面
InnoDB在 SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE锁定读语句上 支持不等待( NOWAIT)和跳过锁(SKIP LOCKED)的选项。也就是说以往加了共享锁之后必须手动释放。
这里如果没有锁就返回结果,如果有就报下面错误。
如果是用有锁就跳过,则无数据。
根据场景使用。反正都是秒回。降低了排查数据库超时的可能。
放在很久以前,MySQL是很少受待见的,而现在MySQL越来越受到重视,包括银行在内的一些系统也会采用MySQL。
放在很久以前,MySQL是很少受待见的
为什么国内绝大多数互联网公司使用的数据库都是MySQL呢?主要原因可以归结为以下这几类:
1、LNMP架构模式的推动
Linux+Nginx+MySQL+PHP这种架构选型在中小型互联网公司使用是最多的,也是最主流的。像淘宝早期也是这种技术选型。因为PHP+MySQL是“黄金搭档”,加上PHP开源框架太多,市场占有率很高,所以也催生了MySQL的发展。
2、大型公司去IOE化的推动:
在以前,一般的不差钱的大型企业在信息化这块的选型较多的就是IOE(IBM小型机AIX系统+Oracle数据库+EMC存储),因为IOE能支撑庞大的业务、很稳定、说出去也是高大尚的。
但是IOE不是一般中小型企业能承担的,IOE的投入巨大。所以在前几年国内不少大型互联网企业称要去IOE化,2013年5月阿里巴巴最后一台IBM小型机下线,2013年07月淘宝广告系统使用的Oracle数据库下线,都是阿里巴巴在去IOE化路上的重要里程碑。
为什么要去IOE呢?IOE的架构模式都是利用小型机和高端存储设备来提供高性能的处理与存储服务,这种架构是集中式的架构(比如将所有的数据集中在一个数据库中),当性能不足时,就通过增加硬件(CPU/内存/磁盘)的方式来提高处理能力,而这种集中式架构不适应当下的大数据需求了。
去IOE的重要实施方案中有一点就是将集中式的Oracle换为分布式的MySQL集群,MySQL可以通过水平扩展来解决性能问题
。
去IOE的重要实施方案中有一点就是将集中式的Oracle换为分布式的MySQL集群,MySQL可以通过水平扩展来解决性能问题
3、开源免费
较Oracle、SQL
Server而言,MySQL是开源免费的
(虽然MySQL被Oracle了),不像Oracle和SQL
Server是需要商业付费的,而且价格昂贵。
较Oracle、SQL
Server而言,MySQL是开源免费的
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流
~
我是科技领域创作者,欢迎关注我了解更多科技知识!
MySQL是开源软件,但开源并不意味着完全免费,开源的优势可以使更多的人对代码改进和完善,但开源软件的使用应遵循该软件提供的使用授权协议。如果您开发的应用软件用到MySQL,不用于销售盈利,您可以免费使MySQL,但您同时也必须开放您的源代码。反之您是用于销售,您应该支付License费用。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)