• mycat 自增id笔记


    1、schema.xml添加表信息

    <table name="tt2" primaryKey="id" autoIncrement="true" dataNode="dn3,dn2,dn1" rule="mod-long"/>

    2、创建表

    CREATE TABLE tt2 (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    nm INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (id)
    ) ENGINE=MYISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    3、添加 sequence_conf.properties信息

    TT2.HISIDS=
    TT2.CURID=0
    TT2.MINID=0
    TT2.MAXID=1000000

    4、重启 mycat

    5、测试

    INSERT INTO tt2 (nm) VALUES (1);

    INSERT INTO tt2 (nm) VALUES (5);
    SELECT * FROM tt2;

    SELECT LAST_INSERT_ID();

    主键生成策略 :http://blog.csdn.net/wangfanbb/article/details/50887108

      既然要分库分表那么全局唯一主键也是我们需要考虑的问题,我所知道的和有使用经验的有如下几种技术:

    问题

    可行性

    基于Redis

    单点问题,redis重启问题等

    较高,公司有项目使用

    给予DB(每次生成多个使用时去取出来)

    单点问题,并发量问题

    低并发,数据量较小的可以使用

    UUID

    暂用存储空间比较大,非可排序的,体现不出增长的趋势

    较高

    twitter snowflake

    Xx年以后可能存在重复问题,需要配置生产参数

    高,分布式的没单点故障问题,时间上是递增的。推荐

    基于DB步长的方式

    不是所有数据库都支持

      我选择的是snowflake。

    也可参考 微信序列号生成器架构设计及演变:http://www.infoq.com/cn/articles/wechat-serial-number-generator-architecture。

  • 相关阅读:
    SystemTap
    在qemu上运行BusyBox
    Initramfs 原理和实践
    在qemu环境中用gdb调试Linux内核
    [转载] 你所不知道的TIME_WAIT和CLOSE_WAIT
    Linux VXLAN
    :not伪类选择器一些错误的写法
    c# 微软小冰-虚拟女友聊天
    Django使用表单操作数据库
    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
  • 原文地址:https://www.cnblogs.com/hclabxing/p/5813271.html
Copyright © 2020-2023  润新知