新闻动态

成都尚狐网络的观点,工作室动态,同时,你也可以在这里查看一些有用的网络常识经验....33

MySQL高效的SQL语句分页的解决方案

2023.06.09 18:52:48   94Clicks

把一个系统的数据库转为分片数据存储时,经常需要在多台的MySQL数据库服务器上生成全局唯一的ID。单一的数据存储时通常用AUTO_INCREMENT列来取得唯一的ID。但涉及到多台的服务器就不好办了。下面简介几种解决方案。


1、使用auto_increment_increment和auto_increment_offset其实这种方式理解起来很简单,这是使用MySQL的AUTO_INCREMENT偏移来实现的。比如有两台MySQL服务器,我们就设置偏移量为2,初始值一个为0.一个为1,这样两台服务器一台为奇数,一台为偶数。这里主要重点就是服务器的初始配置和服务器数据备份。


2、全局节点创建表也就是做一张全局的AUTO_INCREMENT表,其它节点都是从该节点取得ID。这样就可以保证多台服务器的ID唯一。


3、使用memcached在memcached的API中有一个incr()函数,可以自动增长数字并且返回结果。另外也可以使用Redis。其实原理与上一条的差不多


4、批量的分配向不同的服务器分配一段ID,当服务器的ID段用完,然后重新请求分配。5、使用GUID值可以用GUID()函数来实现全局唯一ID,但对于InnoDB存储引擎来说,这样不规则的主键对MySQL很不利。


TAG