html tool

2012年6月18日星期一

数据库初始化脚本测试的process log



  • 1.导出数据库结构
    • + - mysqldump -h127.0.0.1 -uroot -ppass dbname -d >c:\1.sql
      • [thinking]详细了解使用命令行操作mysql的方法,这个要求好大啊,当前自己的直接目的只是导出数据结构,再多的详细要求其实自己也是很模糊的,别吓到自己,还是仔细记录一下现在的细节要求最为next step 吧:)
        [ok]1.导出数据库结构
        2.使用本地命令行访问远程db
    2.对比库时测试的结果
    • 2.1 liquibase中的comment的中文注释都是空
      分两种每列的中文注释和数据库的中文注释
      •  
      + - 2.2 liquibase中每个表导出的ENGINE=InnoDB,而原始库中导出的表结构的ENGINE=MyISAM
      查了一下两种的详细区别:
      [参见: http://wenku.baidu.com/view/2630add5b9f3f90f76c61b35.html ]


      • InnoDB和MyISAM的差别
        InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。
        基本的差别为:
        MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
        MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

        MyIASM是IASM表的新版本,有如下扩展:
         二进制层次的可移植性。
        NULL列索引。
        对变长行比ISAM表有更少的碎片。
        支持大文件。
        更好的索引压缩。
        更好的键吗统计分布。
        更好和更快的auto_increment处理。

        1.MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作
        2.MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。

         以下是一些细节和具体实现的差别:
        1.InnoDB不支持FULLTEXT类型的索引。
        2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
        3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
        4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
        5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。 另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%” 以暂对存储引擎的认识,觉得 InnoDB 支持外键,在数据量可以用“庞大”来形容时,在有良好的 INDEX 的基础上,InnoDB 的查询速度应该比 MyISAM 要快。

         在 Falcon 有稳定版本前,我想 MyISAM 是一个可用的选择方案。 任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

        [thinking]最后因为这个原因,开始第二天新导出和测试。龙哥使用sql结构+liquibase的方式,这个是后话,下面处理
      2.3 liquibase中text类型使用longtext替代了,我go了一下
      text 为 2^16~1
      long text 为2^32~1

      这个是扩大范围了
      2.4 int类型的长度liquibase将int(1),int(2)的定义都扩展为int(11)或是更长了。

      这个也是扩大了,至少在使用上不是什么问题。
    [thinking]由于2想到的
    1.
    liquibase的使用上是不是有什么详细的参数要求,对
    engine的设置
    对text,对int(1)之类的?
    [go]一下这个问题吧!
    2.mysql在engine的细节问题,对区别的详细了解,最好可以测试一下他们的区别
    [doing] read engine的内容,测试不同之处

    3.这个是对应liquibase工具本身的认识
    当初选择用它是磊推荐的,现在想来,我们现在的工作模式中好像看不到这个工具的优势所在
    我现在可以想到这个工具的优秀之处是,多人合作对数据库的修改时的记录,db版的svn。我们现在的模式是只有龙哥在use,客观上倒是时间和修改内容可以记录,但多人协作的好处并没有体现出来,并且在使用上的问题和频率,应该现在没有组织内部的使用动力。我现在就能分析到这里,回头在详细想一下别的好处。不过自己倒是可以多了解一些类似的工具,对之后自己的其他工作应该是有帮助的不是吗?!当玩具的心态了解吧!:)

    4.后记:
    查这个过程中使用到百度文档,发现之前说的可以是用百度快照扣除文字,现在发现百度在搜索结果中把那个按钮去掉了,好像还只去掉了百度文库的,不过测试了一下google的快照还是可以提取文字的,嘻嘻,看来百度是铁了心不给大家文字版百度文库内容了:)
     
      

没有评论:

发表评论