在一些关键的情况下,如数据节点失败,它产生的日志消息量是可能导致文件系统和其他问题,这加剧了问题,由于这些消息记录同步使用的事实
stdout
。为了防止出现这种情况,从目前的工作线程日志消息使用一个日志缓冲区相反,非阻塞,因此不太可能引起干扰其他进程在这种情况下。(错误# 24748843)添加了
——diff-default
选择ndb_config。这个选项会导致程序只打印那些从他们的默认值不同的参数有值。(错误# 85831,错误# 25844166)添加了ndb_top在unix平台上项目。这个工具显示了CPU负载和使用信息
NDB
数据节点,定期更新(每秒钟,默认情况下)。显示在ASCII文本或颜色图表格式;两种格式可以显示在同一时间。也可以禁用彩色输出图形。ndb_top连接到一个SQL NDB集群节点,是一个MySQL服务器(因为这个原因必须能够连接MySQL用户拥有
选择
在桌子上的特权ndbinfo
数据库。ndb_top当前没有可用于Windows平台上。
有关更多信息,请参见ndb_top——视图NDB线程的CPU使用情况的信息。
包装:被添加到两个失踪的依赖关系
恰当的
包:数据节点的包需要
libclass-methodmaker-perl
auto-installer要求
python-paramiko
(错误# 85679,错误# 25799465)
NDB磁盘数据:如果磁盘表的表空间被完全消耗,当一个节点失败,和表行被删除,插入或更新缩小或扩大磁盘列价值节点不可用,随后重启可能失败与错误1601区段,表空间满了。我们阻止这种事的发生期间保留4%的表空间使用节点开始。(错误# 25923125)
NDB集群api:的实现方法
NdbDictionary:: NdbTableImpl:: getColumn ()
在NDB API,使用来自许多地方引用的一个列名称,效率更高了。这个方法使用一个线性搜索的数组的列找到正确的列对象,这可能是低效的表有很多列,并发现作为一个重要的在客户应用程序中使用的CPU。(理想情况下,用户应该执行name-to-column对象映射,然后在方法调用中使用列id或对象,但实际上这并不总是做。)实现,使用成本更低的哈希索引名称查找以前,有相对多列的表的恢复。(一个线性搜索仍然是用于表更少列、性能的差异但在何处。)(错误# 24829435)NDB集群api:NDB错误631是重新归类为(临时)节点恢复错误扫描接管错误,重启扫描事务。这是之前暴露于应用程序的内部(永久)错误没有提供描述。(错误# 86401,错误# 26116231)
备份
. log
文件日志条目包含一个或多个额外的片段,由于过滤的问题变化记录,其他节点在同一节点组。这导致了一个更大的. log
比必要的文件,因此使用更多的资源;在恢复时也可能产生问题,因为来自不同节点的备份可以互相干扰而日志被应用。(错误# 25891014)记忆片段创建期间疲惫导致集群的计划外停机。这个问题可能引发的大量添加独特的关键列在同一时间。(错误# 25851801)
在做最后写入重做日志文件,预计下一个日志文件已经打开写道,但这并非总是如此慢的磁盘,导致节点故障。现在在这种情况下
NDB
等待下一个文件被打开之前正确地试图写。(错误# 25806659)数据节点的线程可以绑定到单个CPU或一组CPU,一套CPU内部表示
NDB
作为一个SparseBitmask
。试图锁定一套CPU时,CPU使用率过高是由于执行锁的常规使用的事实mt_thr_config.cpp: do_bind ()
设置的方法,寻找一些在整个理论的范围SparseBitmask
(2322,4294967294)。这是固定使用SparseBitmask: getBitNo ()
,这只可以用来遍历这些位实际上是集。(错误# 25799506)设置
NoOfFragmentLogParts
这样有超过4重做日志部分/本地数据管理器导致资源枯竭和随后的多个数据节点的失败。因为这是一个无效的配置,添加了一个检查来检测一个配置超过4每LDM重做日志部分,并拒绝它是无效的。(错误# 25333414)在某些情况下,一个失败
ALTER TABLE……添加独特的关键
声明可能导致SQL节点故障。(错误# 24444878)引用:这个问题的回归:错误# 23089566。
错误240是长大当有一个外键触发列之间不匹配值触发执行过程中提供给他们,但是没有错误消息说明问题的根源。(错误# 23141739)
引用:参见:错误# 23068914,错误# 85857。
如果LDM块的数量不整除TC / SPJ块的数量,SPJ请求没有均匀分布在SPJ实例。现在循环分布是用于分发SPJ请求更有效地跨所有可用SPJ实例。
作为这项工作的一部分,许多未使用的类成员变量了
Dbtc
。(错误# 22627519)ALTER TABLE . .MAX_ROWS = 0
现在可以执行只通过使用复制ALTER TABLE
声明。重置MAX_ROWS
0可以不再进行使用算法=原地
。(错误# 21960004)系统重新启动时,当一个节点失败由于错过发送心跳,所有其他节点只报道,另一个节点没有没有任何额外的信息。现在在这种情况下,心跳都错过了和节点的ID,未能发送心跳报告错误日志和日志数据节点。(错误# 21576576)
由于前一个问题不清楚分离优化和执行阶段当涉及到一个查询
集团
,join-pushable评估者不确定其是否实际上是pushable优化的查询执行计划。出于这个原因,这样的分组连接总是认为pushable。已经确定分离问题已经解决在MySQL 5.6工作已经完成,所以我们现在删除这个限制。(错误# 86623,错误# 26239591)当删除表中的所有行立即紧随其后
删除表
,它是可能的萎缩DBACC
散列指数下降之前没有准备好。这种收缩是每个片段操作不检查表的状态。当一个表被删除,DBACC
释放资源,片段大小和目录页的描述不一致;这可能导致过期页面的读取,和未定义的行为。随后删除表中插入很多行也应该有这样的影响由于扩张的散列索引。
为了解决这个问题我们确保,当一个片段将被释放,没有等待扩张或收缩操作在这个片段。(错误# 86449,错误# 26138592)
一些错误消息仍被称为
IndexMemory
,尽管这参数已被弃用。(错误# 86385,错误# 26107514)内部函数
execute_signals ()
在mt.cpp
阅读三个部分指针的信号,即使没有被传递给它。这是无害的,虽然不需要的。当信号读取的最后一页是最后一个工作缓冲区,下一个页面在内存中并没有映射或以其他方式访问,ndbmtd失败和错误。阻止这发生,这个函数只读取部分指针传递给它的实际。(错误# 86354,错误# 26092639)有最多一次Dbacc删除哈希索引页释放当一个表被删除。这意味着,对于大型分区(32页或更多)总是有一些页面丢失。现在所有的哈希索引页表使用它们时释放被删除。(错误# 86247,错误# 26030894)
当一个查询的
NDB
表失败由于违背了外键约束,没有什么有用的信息了外键所示的错误消息,它只包含文本未知错误代码。(错误# 86241,错误# 26029485,错误# 16371292)引用:参见:错误# 16275684。
的ndb_show_tables程序
——不合格
选项不正确工作时设置为0(假);这应该禁用的选项,所以导致完全限定表和索引的名称打印输出。(错误# 86017,错误# 25923164)当一个
NDB
创建表的外键约束,其首先创建了索引,然后,在创建外键的过程中,加载到这些索引NDB
字典缓存。当一个创建表
语句失败由于一个问题涉及外键、索引已经在缓存中没有失效。这意味着任何后续创建表
任何索引有相同的名称与失败的语句中产生了不一致的结果。现在,在这种情况下,任何索引指定的失败创建表
从缓存中立即失效。(错误# 85917,错误# 25882950)在当地的一个检查站,大小是获得的记录
DBTUP
内核块。这个记录大小一直使用到连结控制协定扫描完成后,使DBTUP
在提交的更新记录的最大大小ALTER TABLE
添加一个列的表,这可能导致在连结控制协定节点故障。现在获取记录大小在一个点更新它不会导致这种情况。(错误# 85858,错误# 25860002)试图执行
ALTER TABLE……添加外键
当添加的关键有现有的外键的名称在同一表失败与错误的错误消息。(错误# 85857,错误# 23068914)节点内部调度器(
mt.cpp
)收集统计信息自己的进步和任何杰出的工作表现。这样的一个优秀发送字节数统计,收集send_buffer: m_node_total_send_buffer_size
。这个信息后可能会被发送线程调度程序,它使用它作为一个指标来优化自己的发送性能与延迟。为了减少锁争用内部发送缓冲区,分裂成两个
thr_send_buffer
部分,m_buffer
和m_sending
,每个保护自己的互斥,repesented的总大小m_node_total_send_buffer_size
。调查显示的代码没有一致性,互斥锁是用来更新
m_node_total_send_buffer_size
,结果是没有consurrency保护这个值。为了避免这种情况,m_node_total_send_buffer_size
被替换为两个值,m_buffered_size
和m_sending_size
,保持独立的两个缓冲区的大小。这些计数器更新两个不同的互斥锁保护的保护下单独每个缓冲区,并且现在加在一起获得的总大小。并发控制,更新的部分数量现在应该是正确的,所以,他们的组合值不再随时间积累的错误。(错误# 85687,错误# 25800933)
启用短包装或短的使用
TRANSID_AI
信号发送结果DBSPJ
回到客户端API。(错误# 85545,错误# 25750355)引用:参见:错误# 85525,错误# 25741170。
的最大
BatchByteSize
在发送SCANREQ
信号并不总是正确地设置反映有限缓冲区字节大小可在客户端结果。结果缓冲区大小计算已被修改,这样有效的批处理字节大小准确地反映数据节点返回的最大可能防止可能的结果缓冲区溢出。(错误# 85411,错误# 25703113)当编译NDB内核海湾合作委员会0版本或更高版本,现在使用
-flifetime-dse = 1
。(错误# 85381,错误# 25690926)