再论主键(二)
前面的blog里我说过在DB2中随便拿一个自增量列“创造”主键是很垃圾的行为,“业务无关”的主键是垃圾主键。只有在考虑某些特殊的管理要求时才需要这么做。但我们都会看到在mysql的项目中这种行为是很普遍的,何故?其实用自增列创造主键在mysql中也是基于管理的考虑而并非是业务的选择。[@more@]严格来说只有在innodb引擎(SolidDB引擎用的较少)中这种设计才是可取的。基于innodb引擎表是索引组织表,并非一般数据库中常见的堆表(DB2中全是堆表)。表中所有数据都存储于cluster index中,cluster index默认按照primary key聚集,如果没
pt-online-schema-change增加不写binglog功能
在实现online ddl上pt-online-schema-change 还不错不过默认pt-online-schema-change在主库更改后会全部复制到从库上,一旦有问题风险较大。对这类操作我们习惯是先在从库修改,然后再主库修改。我对这个工具做了个小的修改,增加了--skip-binlog 参数来避免工具的操作写入binlog。如果不加--skip-binlog参数则与工具之前行为相同,加入该参数只是工具的操作不写入binglog,不影响其他session,不用担心丢数据下载后覆盖原文件即可,版本:percona-toolkit-2.1.1免责声明:如果计划使用请先在测试环境进行测试pt-online-schema-change.rar
09年系统架构师大会中一个mysql小"魔术"的分析
来源http://fuleqing.itpub.net/ 转载请注明作者和出处。 记得在09年系统架构师大会上一个51.com的DBA秀了一个mysql的小“魔术”,其大概过程是不更改数据库表中的数据,只是执行了一下flush table表中的数据就全部改变。之前没研究过mysql,一时也不明就里。这两天对mysql很感兴趣,想起了去年这位老兄的“魔术”。今天就做了个测试重现了一下这个场景。 [@more@]测试过程如下:mysql> select * from test;+------+| name |+------+| 1 | | 2 | | 3 | | 4 | | 5 | +------+5 rows in set (0.00 sec)mysql> select * from test;+---