zoukankan      html  css  js  c++  java
  • 关于NDB的表优化

    我们知道,MySQL Cluster 产品用的主要的引擎为:NDB。 很多人说对于NDB来说,执行SQL语句的性能很差。但是我觉得主要是没有仔细的探索。

        对于数据库来说,要判断他的性能如何,无非是要看两点:
        1. 对于数据库的写操作,这里涉及到INSERT, DELETE,UPDATE, DROP等实实在在的语句。
        2. 对于数据库的读操作,这里主要是用来查询的SELECT语句。
    那么,我们怎么样才能对这些语句,也就是说让这些语句在用在他们擅长的场合呢?首先我们来看看初步看看写操作的优化。

       对于写来说,要优化有以下几点:
       1. 选择合适的字段类型。 比如:你要存储3个字节的字符到NDB,那么你应该选择VARCHAR(3), 而不是VARCHAR(4)或者 VARCHAR(5)。 因为对于NDB来讲,每一行的每一列都要对应的以4个字节的倍数来存储,所以对于VARCHAR(3)来说,对于4个字节,那么对于VARCHAR(4) 呢,就得等于8个字节了。
       2. 选择合适的索引, 删除不必要的索引。 大家都知道,NDB自身可用的索引类型为T-TREE和HASH。 对于任何主键和唯一索引,都以HASH结构来存放。对于其他的索引,都以T-TREE来存放。那么我们来看下面的这个简单的表结构:
       create table ytt_1 (id int not null, primary key (id)) engine ndb;
       create table ytt_2 (id int not null, primary key (id) using hash) engine ndb;
    大家觉得上面两个表结构的写性能哪个好呢?答案是ytt_2. 这个可以好好思考下为什么!

      那么对于读呢?怎么优化?
      有的人会问,我看到一大堆大堆得人把NDB 和 INNODB 以及MYISAM这些传统的引擎来对比。 这无疑是一种大大的错误! 其实说白了,他们的处理方式是一样的。但是你的对比硬件环境是否允许?
      1. NDB 为什么叫NDB? NETWORK DATABASE。网络数据库。也就是说NDB的每项操作都要跟网络相关。特别是对于他不擅长的JOIN操作。
      2. 对于单表而且是根据主键来查找,那速度可是来的非常快!
    其实最重要的一点就是NDB能保证数据5个9的可靠性,其他引擎能吗?

  • 相关阅读:
    js实现: e.keycode详解
    jquery 无法设置selected属性,未指明的错误
    NHibernate配置引发的异常
    NetTiers模板属性说明
    Visual Studio 2010 安装“deffactory.dat can not open” 的解决办法
    wia Kodak 扫描仪应用 winform
    Tif文件转换成GIF列表
    JQuery ListBox间移动和ListBox内上下移动
    Mysql存储过程游标循环操作
    CentOS 5下freeswitch中集成使用ekho实现TTS功能一
  • 原文地址:https://www.cnblogs.com/secbook/p/2655282.html
Copyright © 2011-2022 走看看