加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql库中使用 infile outfile 的方法

发布时间:2023-10-28 13:01:57 所属栏目:MySql教程 来源:
导读:小编给大家分享一下mysql中采用uuid而不使用自增ID有什么优势,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!采用uuid而不使用自增

小编给大家分享一下mysql中采用uuid而不使用自增ID有什么优势,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

采用uuid而不使用自增ID的,

优势:

1、数据迁移时不会有主键冲突。

2、在使用分布式架构的主主同步时,也无需配置auto_increment_offset/auto_increment_increment,保证搭建比较简单。

劣势:

1、uuid比bigint占用存储空间大。

2、数据量达到500w以上性能明显没有bigint快。

(性能从哪些方面去比较呢?)

单条查询,

范围查询,

范围统计,

插入,

更新,

备份恢复。

#######################################################

#这里我们只做了一个单条查询的效率比较

#######################################################

环境:单个台式机

ubuntu 14.04 64位,

cpu cores=2 

mem=7935M

测试步骤:

1、分别创建以id,uuid为主键的表。

2、分别插入100w条记录(编写存储过程生成测试数据,收获:需要关闭自动提交,效率大大的提升)。

3、分别以id ,uuid执行单条查询。

4、比较查询时间

最后结果都是在0秒以内完成。

脚本见附件。

#################################

DELIMITER $$

USE `test`$$

DROP PROCEDURE IF EXISTS `p_product_uuid`$$

CREATE DEFINER=`root`@`%` PROCEDURE `p_product_uuid`(IN n BIGINT)

BEGIN

 DECLARE i INT DEFAULT 1 ;

 SET autocommit = 0;

 WHILE

  (i <= n) DO 

  INSERT INTO tmp_id_uuid (id, UUID) 

  VALUES

   (i, UUID()) ;

  SET i = i + 1 ;

 END WHILE ;

 COMMIT;

SET autocommit = 1;

END$$

DELIMITER ;

#####################################

ps:在调试过程中,遇到sql一直在执行,需要停止掉,处理方式如下:

show processlist;

找出你要停止的语句

然后找出你要终止的语句的id

在系统下mysqladmin -uroot -ppassword kill 要杀的ID

#####################################

mysql> truncate table tmp_id_uuid;

Query OK, 0 rows affected (0.14 sec)

mysql> select count(*) from tmp_id_uuid;

+----------+

| count(*) |

+----------+

|    0 |

+----------+

1 row in set (0.00 sec)

mysql> call p_product_uuid(100000);

Query OK, 0 rows affected (5.16 sec)

mysql> select count(*) from tmp_id_uuid;

+----------+

| count(*) |

+----------+

| 100000 |

+----------+

1 row in set (0.04 sec)

mysql> truncate table tmp_id_uuid;

Query OK, 0 rows affected (0.15 sec)

mysql> call p_product_uuid(1000000);

Query OK, 0 rows affected (43.03 sec)

mysql> create table tmp2_id_uuid as select * from tmp_id_uuid;

Query OK, 1000000 rows affected (18.07 sec)

Records: 1000000 Duplicates: 0 Warnings: 0

mysql> select count(*) from tmp2_id_uuid;

+----------+

| count(*) |

+----------+

| 1000000 |

+----------+

1 row in set (0.31 sec)

mysql> alter table tmp_id_uuid add primary key (id);

Query OK, 0 rows affected (24.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table tmp2_id_uuid add primary key (uuid);

Query OK, 0 rows affected (25.94 sec)

Records: 0 Duplicates: 0 Warnings:

mysql> 

mysql> 

mysql> flush tables;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from tmp_id_uuid where id=500000;

+--------+--------------------------------------+

| id  | uuid                |

+--------+--------------------------------------+

| 500000 | e3332083-c743-11e6-bc1e-00e066731e45 |

+--------+--------------------------------------+

1 row in set (0.00 sec)

mysql> flush tables;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from tmp2_id_uuid where uuid='e3332083-c743-11e6-bc1e-00e066731e45';

+--------+--------------------------------------+

| id  | uuid                |

+--------+--------------------------------------+

| 500000 | e3332083-c743-11e6-bc1e-00e066731e45 |

+--------+--------------------------------------+

1 row in set (0.00 sec)

mysql>

mysql> 

以上是“mysql中采用uuid而不使用自增ID有什么优势”这篇文章的所有内容,感谢各位的阅读!

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章