ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
吞吐量可以使用每秒处理的行数或每秒处理的字节数来衡量。如果数据被放置在page cache中,则一个不太复杂的查询在单个服务器上大约能够以2-10GB/s(未压缩)的速度进行处理(对于简单的查询,速度可以达到30GB/s)。如果数据没有在page cache中的话,那么速度将取决于你的磁盘系统和数据的压缩率。例如,如果一个磁盘允许以400MB/s的速度读取数据,并且数据压缩率是3,则数据的处理速度为1.2GB/s。这意味着,如果你是在提取一个10字节的列,那么它的处理速度大约是1-2亿行每秒。
对于分布式处理,处理速度几乎是线性扩展的,但这受限于聚合或排序的结果不是那么大的情况下。
如果一个查询使用主键并且没有太多行(几十万)进行处理,并且没有查询太多的列,那么在数据被page cache缓存的情况下,它的延迟应该小于50毫秒(在最佳的情况下应该小于10毫秒)。 否则,延迟取决于数据的查找次数。如果你当前使用的是HDD,在数据没有加载的情况下,查询所需要的延迟可以通过以下公式计算得知: 查找时间(10 ms) * 查询的列的数量 * 查询的数据块的数量。
在相同的情况下,ClickHouse可以在单个服务器上每秒处理数百个查询(在最佳的情况下最多可以处理数千个)。但是由于这不适用于分析型场景。因此我们建议每秒最多查询100次。
我们建议每次写入不少于1000行的批量写入,或每秒不超过一个写入请求。当使用tab-separated格式将一份数据写入到MergeTree表中时,写入速度大约为50到200MB/s。如果您写入的数据每行为1Kb,那么写入的速度为50,000到200,000行每秒。如果您的行更小,那么写入速度将更高。为了提高写入性能,您可以使用多个INSERT进行并行写入,这将带来线性的性能提升。
系统检查:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
Yandex ClickHouse团队建议使用官方预编译的rpm软件包,用于CentOS,RedHat和所有其他基于rpm的Linux发行版。
首先,您需要添加官方存储库:
sudo yum install yum-utils
sudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
如果您想使用最新版本,请将stable替换为testing(建议您在测试环境中使用)。
然后运行这些命令以实际安装包:
sudo yum install clickhouse-server clickhouse-client
可以运行如下命令在后台启动服务:
sudo service clickhouse-server start
可以在/var/log/clickhouse-server/目录中查看日志。
如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。
你也可以在控制台中直接启动服务:
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
在这种情况下,日志将被打印到控制台中,这在开发过程中很方便。 如果配置文件在当前目录中,你可以不指定‘--config-file’参数。它默认使用‘./config.xml’。
用命令行客户端连接到服务:
clickhouse-client 或者 clickhouse-client --port=90000
(修改端口无效)默认情况下使用‘default’用户无密码的与localhost:9000服务建立连接。 客户端也可连接远程服务,例如:
clickhouse-client --host=example.com --port=90000
参数 | 描述 |
---|---|
--host, -h | 目标服务器名,默认为 localhost |
--port | 目标端口,默认为 9000 |
--user, -u | 连接用户,默认为 default |
--password | 连接用户密码,默认为空字符串 |
--query, -q | 非交互模式下执行的命令 |
--database, -d | 当前操作的数据库,默认选择配置文件配置的值(默认为 default 库) |
--multiline, -m | 如果设定,允许多行查询 |
--multiquery, -n | 如果指定,允许处理由分号分隔的多个查询。只有在非交互式模式工作。 |
--format, -f | 使用指定的默认格式输出结果 |
--vertical, -E | 如果指定,默认使用垂直格式输出结果,等同于 --format=Vertical。在这种格式中,每个值可在单独的行上,显示宽表时很有用。 |
--time, -t | 如果指定,在 stderr 中输出查询执行时间的非交互式模式下。 |
--stacktrace | 如果指定,如果发生异常,也会输出堆栈跟踪。 |
--config-file | 配置文件的名称,额外的设置或改变了上面列出的设置默认值。 |
1、设置数据目录
vi /etc/clickhouse-server/config.xml
2、内存限制设置
vi /etc/clickhouse-server/users.xml
3、端口修改:
访问连接:clickhouse-client --port=90000
4、放开远程访问,只需放开::即可,其他host不能放开
create /temporary/ table /if not exists/ test.zyl (id UInt16, name String) ENGINE=Memory;
-- 插入测试数据
insert into test.zyl (id, name) values (1, 'abc'), (2, 'bbbb');