最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL生成千萬測試數(shù)據(jù)以及遇到的問題

 更新時間:2022年08月03日 10:43:06   作者:怪?咖@  
前兩天發(fā)現(xiàn)同事要做一個對大表進(jìn)行范圍查詢的功能,所以需要生成千萬數(shù)據(jù)進(jìn)行性能測試,下面這篇文章主要給大家介紹了關(guān)于MySQL生成千萬測試數(shù)據(jù)以及遇到的問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1、創(chuàng)建基礎(chǔ)表結(jié)構(gòu)

CREATE TABLE `t_user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `c_user_id` varchar(36) NOT NULL DEFAULT '',
 `c_name` varchar(22) NOT NULL DEFAULT '',
 `c_province_id` int(11) NOT NULL,
 `c_city_id` int(11) NOT NULL,
 `create_time` datetime NOT NULL,
 PRIMARY KEY (`id`),
 KEY `idx_user_id` (`c_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2、創(chuàng)建內(nèi)存表

直接往實(shí)表添加數(shù)據(jù)比較慢,所以我們先插入內(nèi)存表,然后再同步到實(shí)表。

CREATE TABLE `t_user_memory` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `c_user_id` varchar(36) NOT NULL DEFAULT '',
 `c_name` varchar(22) NOT NULL DEFAULT '',
 `c_province_id` int(11) NOT NULL,
 `c_city_id` int(11) NOT NULL,
 `create_time` datetime NOT NULL,
 PRIMARY KEY (`id`),
 KEY `idx_user_id` (`c_user_id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4;

3、創(chuàng)建存儲過程和函數(shù)

# 創(chuàng)建隨機(jī)字符串
delimiter $$
CREATE DEFINER = `root` @`%` FUNCTION `randStr` ( n INT ) RETURNS VARCHAR ( 255 ) CHARSET utf8mb4 DETERMINISTIC BEGIN
	DECLARE
		chars_str VARCHAR ( 100 ) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	DECLARE
		return_str VARCHAR ( 255 ) DEFAULT '';
	DECLARE
		i INT DEFAULT 0;
	WHILE
			i < n DO
			

			SET return_str = concat(
				return_str,
			substring( chars_str, FLOOR( 1 + RAND() * 62 ), 1 ));
		
		SET i = i + 1;
		
	END WHILE;
	RETURN return_str;
	
	END $$ 
# 創(chuàng)建隨機(jī)時間的函數(shù),sd和ed兩個入?yún)⒋砩傻臅r間是這個時間范圍內(nèi)的。sd開始時間,ed截止時間。	
CREATE DEFINER = `root` @`%` FUNCTION `randDataTime` ( sd DATETIME, ed DATETIME ) RETURNS datetime DETERMINISTIC BEGIN
	DECLARE
		sub INT DEFAULT 0;
	DECLARE
		ret DATETIME;
	
	SET sub = ABS(
	UNIX_TIMESTAMP( ed )- UNIX_TIMESTAMP( sd ));
	
	SET ret = DATE_ADD( sd, INTERVAL FLOOR( 1+RAND ()*( sub - 1 )) SECOND );
	RETURN ret;

END $$ 

# 創(chuàng)建插入數(shù)據(jù)存儲過程
CREATE DEFINER = `root` @`%` PROCEDURE `add_t_user_memory` ( IN n INT ) BEGIN
	DECLARE
		i INT DEFAULT 1;
	WHILE
			( i <= n ) DO
			INSERT INTO t_user_memory ( c_user_id, c_name, c_province_id, c_city_id, create_time )
		VALUES
			(
				uuid(),
				randStr ( 20 ),
				FLOOR( RAND() * 1000 ),
				FLOOR( RAND() * 100 ),
				randDataTime ( "2020-01-01", "2021-01-01" ));
		

		SET i = i + 1;
		
	END WHILE;

END $$
delimiter ;

4、執(zhí)行存儲過程

存儲過程當(dāng)中的數(shù)字就是要生成的數(shù)量,自行填寫。

CALL add_t_user_memory(10);

100萬大概需要8分鐘!

5、遇到的問題

創(chuàng)建存儲過程和執(zhí)行的時候可能會出現(xiàn)以下兩種問題:

5.1、1449錯誤

在創(chuàng)建存儲過程的時候可能會出現(xiàn)1449:錯誤:

mysql 1449 : The user specified as a definer (‘root’@‘%’) does not exist

經(jīng)查詢是權(quán)限問題,解決辦法:

運(yùn)行sql:

grant all privileges on *.* to 'root'@'%' identified by ".";
flush privileges;

5.2、1114錯誤

當(dāng)生成數(shù)量大的時候就可能會報(bào)這個錯誤:

解決方法:在my.cnf中修改max_heap_table_size = 256M tmp_table_size = 256M,重啟MySQL服務(wù)(my.cnf在mysql安裝路徑),如果還不夠用根據(jù)自己電腦自行修改。如果是線上服務(wù)器,最好不要自行修改,還是跟運(yùn)維多溝通溝通,避免出現(xiàn)問題。

show VARIABLES like '%TABLE_size%';

改完可以在這進(jìn)行查看:

6、同步數(shù)據(jù)

INSERT INTO t_user SELECT * FROM t_user_memory;

總結(jié)

到此這篇關(guān)于MySQL生成千萬測試數(shù)據(jù)以及遇到的問題的文章就介紹到這了,更多相關(guān)MySQL生成千萬測試數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL優(yōu)化之如何寫出高質(zhì)量sql語句

    MySQL優(yōu)化之如何寫出高質(zhì)量sql語句

    在數(shù)據(jù)庫日常維護(hù)中,最常做的事情就是SQL語句優(yōu)化,因?yàn)檫@個才是影響性能的最主要因素。這篇文章主要給大家介紹了關(guān)于MySQL優(yōu)化之如何寫出高質(zhì)量sql語句的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • linux下源碼安裝mysql5.6.20教程

    linux下源碼安裝mysql5.6.20教程

    這篇文章主要為大家詳細(xì)介紹了linux下源碼安裝mysql5.6.20教程的相關(guān)資料,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 淺談慢SQL優(yōu)化之索引的作用

    淺談慢SQL優(yōu)化之索引的作用

    本文針對?MySQL?數(shù)據(jù)庫的?InnoDB?存儲引擎,介紹其中索引的實(shí)現(xiàn)以及索引在慢?SQL?優(yōu)化中的作用,本文主要討論不同場景下索引生效與失效的原因,感興趣的小伙伴可以跟著小編一起來探討
    2023-05-05
  • MySQL?JSON類型數(shù)據(jù)查詢方法

    MySQL?JSON類型數(shù)據(jù)查詢方法

    這篇文章主要介紹了MySQL?JSON類型數(shù)據(jù)查詢,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-04-04
  • MySQL group by對單字分組序和多字段分組的方法講解

    MySQL group by對單字分組序和多字段分組的方法講解

    今天小編就為大家分享一篇關(guān)于MySQL group by對單字分組序和多字段分組的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • SQL使用WHERE條件語句的項(xiàng)目實(shí)踐

    SQL使用WHERE條件語句的項(xiàng)目實(shí)踐

    本文將介紹WHERE子句中使用的通用語法,它還將概述如何在單個WHERE子句中組合多個搜索條件謂詞以更細(xì)粒度的方式過濾數(shù)據(jù),以及如何使用NOT操作符排除而不是包含滿足給定搜索條件的行,感興趣的可以了解一下
    2023-09-09
  • MySQL下將一個表的數(shù)據(jù)插入到另外一個表的實(shí)現(xiàn)語句

    MySQL下將一個表的數(shù)據(jù)插入到另外一個表的實(shí)現(xiàn)語句

    開發(fā)中,我們經(jīng)常需要將一個表的數(shù)據(jù)插入到另外一個表,有時還需要指定導(dǎo)入字段,雖然這個實(shí)現(xiàn)起來非常簡單,但是還是會困擾許多新手,因此專門發(fā)一篇文章備查。
    2009-09-09
  • Mysql優(yōu)化策略(推薦)

    Mysql優(yōu)化策略(推薦)

    這篇文章主要介紹了Mysql優(yōu)化策略,文中介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL服務(wù)器默認(rèn)安裝之后調(diào)節(jié)性能的方法

    MySQL服務(wù)器默認(rèn)安裝之后調(diào)節(jié)性能的方法

    在面試MySQL DBA或者那些打算做MySQL性能優(yōu)化的人時,我最喜歡問題是:MySQL服務(wù)器按照默認(rèn)設(shè)置安裝完之后,應(yīng)該做哪些方面的調(diào)節(jié)呢?
    2011-05-05
  • MySQL修改時區(qū)的方法小結(jié)

    MySQL修改時區(qū)的方法小結(jié)

    這篇文章主要介紹了MySQL修改時區(qū)的方法,總結(jié)分析了三種常見的MySQL時區(qū)修改技巧,包括命令行模式、配置文件方式及代碼方式,需要的朋友可以參考下
    2016-05-05

最新評論

咸丰县| 玛沁县| 桑日县| 阿城市| 渭南市| 岳池县| 扶余县| 岗巴县| 金溪县| 邵阳县| 栾城县| 靖远县| 丽江市| 三明市| 宁强县| 清流县| 建宁县| 东宁县| 成都市| 手游| 庆城县| 中卫市| 乌拉特前旗| 孟村| 调兵山市| 海盐县| 正安县| 聂拉木县| 云龙县| 上蔡县| 鹤峰县| 兰溪市| 尼勒克县| 东乌珠穆沁旗| 庆阳市| 洛川县| 驻马店市| 苏尼特左旗| 清苑县| 天气| 屯门区|