mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-14 19:45:11 +00:00
420089c301
With this new layout, sparsehash will be used over default HashMap, sparsehash is more memory efficient but it is also slower. So in a nutshell: - HashMap uses ~2x more memory then sparse_hash_map - HashMap ~2-2.5x faster then sparse_hash_map (tested on lots of input, and the most close to production was dictionary with 600KK hashes and UInt16 as value) TODO: - fix allocated memory calculation - getBufferSizeInBytes/getBufferSizeInCells interface - benchmarks v0: replace HashMap with google::sparse_hash_map v2: use google::sparse_hash_map only when <sparse> isset to true v3: replace attributes with different layout v4: use ch hash over std::hash
386 lines
9.7 KiB
XML
386 lines
9.7 KiB
XML
<dictionaries>
|
|
<dictionary>
|
|
<name>flat_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<flat/>
|
|
</layout>
|
|
<structure>
|
|
<id>
|
|
<name>key</name>
|
|
</id>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
|
|
<dictionary>
|
|
<name>hashed_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<hashed/>
|
|
</layout>
|
|
<structure>
|
|
<id>
|
|
<name>key</name>
|
|
</id>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
|
|
<dictionary>
|
|
<name>hashed_sparse_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<sparse_hashed/>
|
|
</layout>
|
|
<structure>
|
|
<id>
|
|
<name>key</name>
|
|
</id>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
|
|
<dictionary>
|
|
<name>cache_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<cache><size_in_cells>1000</size_in_cells></cache>
|
|
</layout>
|
|
<structure>
|
|
<id>
|
|
<name>key</name>
|
|
</id>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
|
|
<dictionary>
|
|
<name>complex_hashed_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<complex_key_hashed/>
|
|
</layout>
|
|
<structure>
|
|
<key>
|
|
<attribute>
|
|
<name>key</name>
|
|
<type>UInt64</type>
|
|
</attribute>
|
|
</key>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
|
|
<dictionary>
|
|
<name>complex_cache_ints</name>
|
|
<source>
|
|
<clickhouse>
|
|
<host>localhost</host>
|
|
<port>9000</port>
|
|
<user>default</user>
|
|
<password></password>
|
|
<db>test_00950</db>
|
|
<table>ints</table>
|
|
</clickhouse>
|
|
</source>
|
|
<lifetime>0</lifetime>
|
|
<layout>
|
|
<complex_key_cache><size_in_cells>1000</size_in_cells></complex_key_cache>
|
|
</layout>
|
|
<structure>
|
|
<key>
|
|
<attribute>
|
|
<name>key</name>
|
|
<type>UInt64</type>
|
|
</attribute>
|
|
</key>
|
|
<attribute>
|
|
<name>i8</name>
|
|
<type>Int8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i16</name>
|
|
<type>Int16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i32</name>
|
|
<type>Int32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>i64</name>
|
|
<type>Int64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u8</name>
|
|
<type>UInt8</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u16</name>
|
|
<type>UInt16</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u32</name>
|
|
<type>UInt32</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
<attribute>
|
|
<name>u64</name>
|
|
<type>UInt64</type>
|
|
<null_value>0</null_value>
|
|
</attribute>
|
|
</structure>
|
|
</dictionary>
|
|
</dictionaries>
|