UUID(Universally Unique Identifier)是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
UUID主要有以下几种类型:
UUID广泛应用于数据库、分布式系统、文件系统等领域,用于标识唯一的数据项。
CREATE TABLE example_table (
id CHAR(36) NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO example_table (id, name) VALUES (UUID(), 'John Doe');
SELECT * FROM example_table WHERE id = '生成的UUID';
原因:UUID是无序的,当作为主键插入数据时,会导致InnoDB存储引擎的页分裂,从而影响性能。
解决方法:
UUIDv1
的方式生成有序的UUID,但这仍然不能完全避免页分裂。-- 创建表时使用自增ID和UUID作为复合主键
CREATE TABLE example_table (
id INT AUTO_INCREMENT,
uuid CHAR(36) NOT NULL,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id, uuid)
);
-- 插入数据时生成UUID
INSERT INTO example_table (uuid, name) VALUES (UUID(), 'John Doe');
-- 查询数据
SELECT * FROM example_table WHERE id = 1 AND uuid = '生成的UUID';
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云