| 
                         从另外一个维度来说,我们对于主键的理解是有偏差的,我们不能单一的认为主键就一定是从1开始的整数类型,我们需要结合业务场景来看待,比如我们的身份证其实就是一个不错的例子,把证号分成了几个区段,偏于检索和维护;或者是外出就餐时得到的流水单号,它都有一定的业务属性在里面,对于我们去理解业务的使用是一种不错的借鉴。 
问题4:如何来理解rowid的潜在瓶颈并进行调试验证 
我们知道rowid只有6个字节,因此最大值是2^48,所以一旦 row_id超过这个值还是会递增,这种情况下是否存在隐患。 
光说不练假把式,我们可以做一个测试来说明。 
1)我们创建一张表test_inc,不包含任何索引。 
create table test_inc(id int) engine=innodb; 
2)通过ps -ef|grep mysql得到对应的进程号,使用gdb来开始做下调试配置,切记!此处应该是自己的测试环境。 
- [root@dev01 mysql]# gdb -p 3132 -ex 'p dict_sys->row_id=1' -batch  
 - [New LWP 3192]  
 - [New LWP 3160]  
 - [New LWP 3159]  
 - [New LWP 3158]  
 - [New LWP 3157]  
 - [New LWP 3156]  
 - [New LWP 3155]  
 - [New LWP 3154]  
 - [New LWP 3153]  
 - [New LWP 3152]  
 - [New LWP 3151]  
 - [New LWP 3150]  
 - [New LWP 3149]  
 - [New LWP 3148]  
 - [New LWP 3147]  
 - [New LWP 3144]  
 - [New LWP 3143]  
 - [New LWP 3142]  
 - [New LWP 3141]  
 - [New LWP 3140]  
 - [New LWP 3139]  
 - [New LWP 3138]  
 - [New LWP 3137]  
 - [New LWP 3136]  
 - [New LWP 3135]  
 - [New LWP 3134]  
 - [New LWP 3133]  
 - [Thread debugging using libthread_db enabled]  
 - 0x00000031ed8df283 in poll from /lib64/libc.so.6  
 - $1 = 1 
 
  
3)我们做下基本检验,得到建表语句,保证测试是预期的样子。 
- mysql> show create table test_incG  
 - *************************** 1. row ***************************  
 - Table: test_inc  
 - Create Table: CREATE TABLE `test_inc` (  
 - `id` int(11) DEFAULT  
 - ) ENGINE=InnoDB DEFAULT CHARSET=utf8  
 - 1 row in set (0.00 sec) 
 
  
4)插入一些数据,使得rowid持续自增。 
- mysql> insert into test_inc values(1),(2),(3);  
 - Query OK, 3 rows affected (0.08 sec)  
 - Records: 3 Duplicates: 0 Warnings: 0 
 
  
5)我们对rowid进行重置,调整为2^48 
- mysql> select power(2,48);  
 - +-----------------+  
 - | power(2,48) |  
 - +-----------------+  
 - | 281474976710656 |  
 - +-----------------+  
 - 1 row in set (0.00 sec)  
 - [root@dev01 mysql]# gdb -p 3132 -ex 'p dict_sys->row_id=281474976710656' -batch  
 - ...  
 - ...
 - [Thread debugging using libthread_db enabled]  
 - 0x00000031ed8df283 in poll from /lib64/libc.so.6  
 - $1 = 281474976710656 
 
                          (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |