我有一个带有自动递增BIGINT唯一主键的假设表。如果我选择对表格进行分区,那么主键BIGINT会发生什么?分片是否允许超出BIGINT的容量?分片是否可以阻止重复键出现?
提前致谢...
答案 0 :(得分:1)
据我所知,NDB存储引擎根据第一个主键列的模数在分片数量上进行分片。它这样做是因为它确定了存储行的节点,并且它也确定了当您的查询请求行时从哪个节点读取。
这意味着您不能在多个分片上存在相同的主键值。换句话说,BIGINT中的值范围在分片中划分。
所以不,你不会超过BIGINT中的值范围。虽然我质疑为什么你甚至需要问,因为BIGINT真的非常大,你不可能用尽BIGINT,除非你每行跳过几十亿个id值。
是的,将值映射到节点意味着可以在每个节点上执行唯一键检查。但是,使用复制时需要注意这一点。阅读https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-issues.html