stoneatom / stonedb

StoneDB is an Open-Source MySQL HTAP and MySQL-Native DataBase for OLTP, Real-Time Analytics, a counterpart of MySQLHeatWave. (https://stonedb.io)
https://stonedb.io/
GNU General Public License v2.0
869 stars 141 forks source link

bug: Tianmu column storage engine - performs HashJoin queries - runs out of disk space #558

Open adofsauron opened 2 years ago

adofsauron commented 2 years ago

Describe the problem

Abstract:

Mysql Column Storage engine - performs HashJoin query - runs out of disk space to record the problem. Data file backup https://download.csdn.net/download/adofsauron/86662384

SQL:


CREATE TABLE `data02` (
  `id` int(11) DEFAULT NULL,
  `uname` varchar(20) DEFAULT NULL,
  `regdate` datetime DEFAULT NULL,
  `logindate` datetime DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `encryption` varchar(20) DEFAULT NULL,
  `number` varchar(20) DEFAULT NULL,
  `accuracy` varchar(50) DEFAULT NULL,
  `azimuth` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=TIANMU DEFAULT CHARSET=utf8;

select a.id,b.uname from data02 a,data02 b where a.uname=b.uname;

ERROR 1105 (HY000): Tianmu other specific error

Exceptions during query:

Error log:


[2022-09-23 14:32:32.901310] [1967019776] Begin traversed with 1 threads with none type.
[2022-09-23 14:32:32.904042] [713017088] Establishing hash table need 57MB
[2022-09-23 14:32:32.928696] [1967019776] End traversed 1280/1000000 rows.
[2022-09-23 14:32:32.928767] [1967019776] Too many hash conflicts: restarting join.
[2022-09-23 14:32:32.928912] [1967019776] Begin traversed with 1 threads with none type.
[2022-09-23 14:32:32.931694] [201324288] Establishing hash table need 57MB
[2022-09-23 14:32:51.923140] [1967019776] End traversed 1000000/1000000 rows.
[2022-09-23 14:32:51.923374] [1967019776] Begin match dim of 1000000 rows, spliting into 4 threads with packs type.
[2022-09-23 14:38:22.773741] [1967019776] Error: Parallel hash join failed.

/ stonedb57 / install/data/cache directory swelled TMP files:


root@htap06:/stonedb57/install/data/cache# ls -ltr
total 16777260
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000770x7f29e00329e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000580x7f29e0032ef0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000050x7f29e0032770.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000720x7f29e0033160.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000270x7f29e00343e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000460x7f29e00345e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000310x7f29e001aba0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:33 JW_INT000000650x7f29e001b6b0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001770x7f29e00329e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001580x7f29e0032ef0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001050x7f29e0032770.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001720x7f29e0033160.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001270x7f29e00343e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001460x7f29e00345e0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001310x7f29e001aba0.tianmu_tmp
-rw-r----- 1 mysql mysql 1073741824 Sep 23 14:34 JW_INT000001650x7f29e001b6b0.tianmu_tmp

Expected behavior

No response

How To Reproduce

No response

Environment

No response

Are you interested in submitting a PR to solve the problem?

wisehead commented 1 year ago

the result is correct, but takes too much disk space, will fix it in v1.0.3

adofsauron commented 1 year ago

A similar scenario: https://github.com/stoneatom/stonedb/issues/1110