在MySQL 5.5中有什么新功能

在MySQL 5.5中有什么新功能

为MySQL,这是一个忙碌的一年。也许你已听说过。以下是一些最近有所改善的速度,可扩展性和用户友好的MySQL数据库和InnoDB存储引擎,我们认为应该拥有自己的头条新闻。现在是一个伟大的时间beta测试的5.5版本,并反馈给MySQL的工程团队。

改进的性能和可扩展性

InnoDB的成为默认的存储引擎

MySQL有时会被撞倒的功能,如ACID兼容的事务,外键的支持和崩溃恢复。这些功能最强的InnoDB存储引擎,但MyISAM表一直是默认的,因此新用户可能会得到错误的印象。在MySQL 5.5中,InnoDB是默认的存储引擎,使每个人都可以看到这一点的可靠性和稳定性的开箱即用。作为奖励,在MySQL 5.5 InnoDB的是InnoDB 1.1及以上内置的InnoDB在5.1和以前的许多性能和可扩展性功能,是经过重新设计的InnoDB。(因为我们是统一在MySQL的InnoDB使用的最佳和最快的技术,我们正在逐步的插件内置的区别MySQL 5.5中的最新和最伟大的InnoDB的1.1。)了解更多有关最新的InnoDB的增强功能如下。

更好的元数据锁定内交易

如果一个表在一个事务中被引用,任何其它事务可以执行DDL,如DROP TABLEALTER TABLE直到第一个事务提交。在此之前,锁定的语句,而不是整个交易结束时被释放。阅读更多元数据锁内交易。

改进的性能和规模上的Win32和Win64

如果您的公司使用的是Windows本身或在混合环境中,你可能想在Windows上部署MySQL数据库。为了使之成为现实,MySQL团队已经纳入了一些特定于Windows的功能,加快和扩大。

  • Windows API调用大部分的I / O完成在MySQL(社区贡献,帽尖耶利米的Gowdy)。
  • 能力建立在Windows的DLL引擎和其他插件。
  • 网络方面支持自动检测的MAC地址(一个社区的贡献,帽尖克里斯·鲁尼恩)。
  • 大量的清理和简化线程代码。

提高可用性

半同步复制

此功能提高了可靠性,故障转移,以避免将故障转移到缺少一些已提交的更改从主的奴隶。您可以选择已承诺在主节点上等待,直到至少有一个从相关事件的交易记录。半同步方面是因为主不会等待所有的奴隶承认,有一个协议,以避免等待时间过长,主的奴隶落后。半同步复制。

复制心跳

在复制过程中,心跳是定期从主节点的从节点发送的消息。您可以配置心跳周期。如果还没有接收到该消息,从站知道主节点已失败。现在,您可以避免了虚假的中继日志旋转,当主机处于闲置状态,依赖于一个更精确的故障检测机制,并有一个准确的估计秒在主。(这是一个不同的功能,这是一个类似的健康检查集群节点的系统Linux的心跳。)要使用此功能,你发出的命令,如:

STOP SLAVE;
CHANGE MASTER TO master_heartbeat_period = 毫秒为单位 ;
START SLAVE;
SHOW STATUS像“slave_heartbeat期”
显示状态像“slave_received_heartbeats”,

改进的可用性

SIGNAL / RESIGNAL

SIGNALRESIGNAL报表的让你实现熟悉的异常处理逻辑在存储过程,存储函数,触发器,事件,和数据库应用程序调用这些事情。信号传递执行到错误处理程序,抛掷提出其他的报表语言。您可以以一致的方式,可以解释的错误处理程序在调用程序中的错误,SQLSTATE值和消息编码RESIGNAL让你自己的错误处理和清理后,做一定量的异常传播。使用RESIGNAL,您可以通过沿着原来的错误信息或修改。了解更多关于信号/ RESIGNAL。

更多的分区选项

RANGE COLUMNS有了新的列表列CREATE TABLE语句中的条款,分区是现在更加灵活,也可以更好地优化查询。相反的表达,可以指定一个或多个列的名称。这些条款都让你在分区的基础上DATEDATETIME或字符串值(如CHARVARCHAR)。分区修剪可以使用RANGE COLUMNSLIST COLUMMS的分区表上的查询优化WHERE条件,比较不同的列和常量,如

为a = 10,b>的5

<“2005-11-25”和B = 10,C = 50

阅读更多列的分区。

性能模式

性能架构特性包括可选的的模式,名为performance_schema,与表,可以查询到看到贴心的细节低级别的MySQL性能。在那一刻,你可以得到有关表演权,或不同数量的历史性能数据。您可以清除数据重置的数字,过滤器和格式的数据使用WHERE子句,和一般与它使用各种SQL善良的互动。性能架构数据现在还包括InnoDB存储引擎的详细信息。了解更多关于性能模式。

在InnoDB中有什么新功能

为了使长话短说:它是所有关于性能和可扩展性!对于那些喜欢尝试所有的排列组合的配置设置,这些改进使我们提前道歉,没有思想或努力。

性能改进

在今年的MySQL大会暨展览会,你会听到有关的InnoDB插件1.0.7,第一个生产就绪(GA)版本的InnoDB插件。在这里列出的增强,大多是1.1,这是InnoDB的MySQL 5.5中的一部分,因此仍处于测试阶段。下载MySQL 5.5,并尝试出来。

提高恢复性能

InnoDB的巨大优势之一是它能够可靠地影响数据库的任何类型的系统崩溃后恢复数据。但这种清理和检查,在下次重新启动需要更长的时间。好了,掩盖你的日晷。收起你的沙漏。进取的InnoDB的团队已经改进了算法在恢复数额巨大-在计算机科学方面,这是一个更好的大O数量。现在,你需要保持你的手指准备秒表的恢复需要多久。此功能可在InnoDB 1.1的InnoDB插件1.0.7。阅读更多更快的恢复。

多个缓冲池实例

经常在多千兆字节的范围与今天的缓冲池,页是不断地被读取和更新由不同的数据库中的线程。此增强功能消除了瓶颈,使所有其他线程等待,当一个线程正在更新的缓冲池。通常与缓冲池的所有的结构现在可以被相乘,如的互斥锁保护它,LRU信息,和冲水列表。您可以控制多少缓冲池实例使用缺省值仍然是1。此功能效果最佳结合 ​​几千兆字节的缓冲池大小,每个缓冲池的实例可以是千兆字节或更多。了解更多关于多个缓冲池实例。

多个回滚段

此功能的性能和可扩展性的改进。通过将单回退段成多个部分,,InnoDB允许并发事务创建undo数据(插入,更新和删除操作)而无需相互等待。一个快乐的后果是,老1023同时插入/更新/删除交易限额是现在高得多,共约128K并发作家交易。此功能不介绍任何在InnoDB文件格式不兼容,不需要使用新的Barracuda文件格式。但是,安装在系统表空间只发生时,系统创建表空间,所以利用此功能,你必须创建一个新的实例(不只是一个新的表或一个新的数据库),将数据导入到它。了解更多关于多个回滚段。

本机异步I / O用于Linux

此功能可以在Linux系统上更好的并发I / O请求。使用异步I / O,I / O请求可以发送和查询服务的线程不需要等待I / O完成这方面委派的I / O辅助线程。InnoDB中已经支持异步I / O在Windows系统上。在Windows以外的平台上,InnoDB内部安排其I / O调用,好像他们是异步的(导致的长期模拟异步I / O),但幕后真正的查询线程将阻塞,直到请求完成。现在,真正的异步I / O支持(称为本机异步I / O,因此不会混淆与异步已经在源)可以在Linux和Windows。此功能需要在Linux上安装libaio的用户空间库。它配备了一个的配置选项innodb_use_native_aio,你可以关闭的情况下,任何相关的I / O子系统的启动问题。了解更多关于异步I / O用于Linux。

扩展的更改的缓冲:现在与删除缓冲和清除缓冲

InnoDB使用索引来更快地进行查询。二级指标,那些不是主键的列上,要求工作意义的磁盘写入使他们能跟上最新的当那些那些列插入,删除,或更新。例如,如果您运行该命令DELETE FROM T WHERE C1 ='东西',你有一个辅助索引列C2,急于更新,二级指标是什么?其内容可能不是在缓冲池中,也许该索引将不会被读取很长一段时间。

InnoDB有一段时间,现在有一个优化延迟的变化是由于插入时,磁盘写入二级索引维护。此延迟等待索引内容被读入缓冲池的某些其他原因,例如为一个查询,其中的变化可以迅速作出在存储器中,然后刷新回磁盘使用写脏数据块的正常时间表。当在缓冲池中的变化会影响一组连续的磁盘块,他们可以更有效地被刷新,如果数据被写入一块一块的。很聪明!

在InnoDB 1.1,这一技术被扩展到包括不同类型的写所造成的删除(操作的初始删除标记,随后又通过清除操作,垃圾收集所有已删除的记录)。这种优化是在你的操控下通过的innodb_change_buffering的配置选项,其中有一个新的默认(我们称之为优化的变化,而 ​​不是旧的名称插入缓冲缓冲的实际内存结构仍然是所谓的插入缓冲区。)了解更多有关增强的变化缓冲。

可扩展性的改进

在InnoDB 1.1的可扩展性的改进线程和互斥争围绕着更好的隔离。这些性能改进,真正踢时,数据库服务器负载过重。(对于那些你们谁是尚未专家对InnoDB性能,互斥体是在不同的线程的内存结构,防止干扰彼此的更改重要的内存区域,如缓冲池)。

改进的日志系统互斥

在此之前,单个互斥锁保护相关的撤消和日志信息的不同的存储区域。特别是,这个互斥量阻止访问的缓冲池,同时改变被写入DDL操作进行更改的数据字典。分裂老log_sys互斥创建一个单独的log_flush_order互斥的内部处理所有可能发生较少等待和阻塞的缓冲池的其他业务,无需任何配置上的需要。了解更多有关提高了日志系统互斥。

独立的冲洗列表互斥

按照同样的思路,业务涉及缓冲池和冲洗列表以前的单个互斥锁保护的,这可能会导致不必要的延误。(缓冲池的互斥体在历史上是非常热的,所以任何其他操作,捆绑缓冲池火添加燃料)。现在刷新列表中有自己的互斥量,减少争用和InnoDB的更快而不出任何缓冲池操作配置需要的一部分。更多关于单独冲洗列表互斥。

改进的清除调度

InnoDB的清除操作是一种类型的垃圾收集,定期运行。在此之前,清除的主线程的一部分,这意味着它可能会阻止一些其他的数据库操作。现在,此操作可以在其自己的线程中运行,允许更多的并发性。您可以控制是否被分裂成它自己的线程与的innodb_purge_threads配置选项,可以设置为0(默认值)或1(一个单独的净化线程)清除操作这种架构的变化可能不会导致大的提速这个单一的净化线程,但它奠定了基础,以调整其他相关的清除操作的瓶颈,因此,在未来的多清除线程可以提供更大的性能增益。的配置选项innodb_purge_batch_size可以设置从1到5000,默认的20,但典型的使用者应该不需要更改该设置。了解更多关于提高清洗调度。

更好的仪器仪表/诊断

InnoDB的统计,在性能模式

性能模式已经到了MySQL 5.5的一部分有一段时间了。InnoDB的1.1仪表的性能架构监测的第一次,可用于InnoDB的特定互斥体,RW-锁,线程和I / O操作的统计数据。数据的结构,让您可以看到的一切,或过滤器看到的只是InnoDB的项目。performance_schema中的信息可以让你看到如何这些项目的因素到数据库的整体性能,它的是最热根据不同的工作负载和系统配置,并跟踪问题的有关文件和行的源代码中,因此你可以真正看到什么幕后发生的事情。了解更多关于InnoDB与性能架构的集成。


接下来的步骤:

现在,您已经了解所有令人兴奋的新的性能和可扩展性的改进,轮到你了MySQL 5.5中的旋转:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值