use

阅读 / 问答 / 标签

clickhouse配完副本无法启动

副本文件损坏。1、ClickHouse是俄罗斯的Yandex于2016年开源的用于在线分析处理查询(OLAP:OnlineAnalyticalProcessing)MPP架构的列式存储数据库。2、clickhouse软件的副本文件发生损坏,在配置完后导致系统本身的文件也损坏,需要用户从新下载软件和副本再从新配置即可。

Could not initialize class ru.yandex.clickhouse.ClickHouseDriver

原因在于 : 将 clickhouse-jdbc-0.1.54.jar 放到了 jre/lib/ext 目录下,但是其相关的依赖没有放进去

clickhouse-部署详解

部署为3个节点的集群,数据无副本。单机则不需要配置metrika.xml文件即可。 主要配置服务端口、ip、文件存储目录,系统配置、zk配置等参数。本文不涉及zk配置。并且开启query_log,方便后期做监控。 文件中注释很详细,根据需要配置即可。 集群配置、压缩算法配置。本示例集群名为default_cluster,可定义多个。名称自定义,创建分布式表时指定对应的集群名称实现灵活使用数据。 结构资料: 密码可以以明文或SHA256(十六进制格式)指定 不建议使用明文; 结果的第一行是密码。 第二行是相应的SHA256哈希 官方配置文档 介绍很详细,在实际使中还需要自己优化。自己就踩过不少坑,以后有机会和大家分享。load_balancing指定用于分布式查询处理的副本选择算法

clickhousedroppartition是异步的么

是异步的。clickhousedroppartition是计算机程序中的一个命令。据相关资料查询显示该命令是异步执行的,可以通过查看表system.mutations来查看命令的是否执行。clickhouse默认是不支持实时删除表中的数据,数据的删除通常是异步进行。

ClickHouse数据生命周期管理

如果将ClickHouse作为Log或Metrics这种具有明显时序特征数据的存储和分析引擎,那就需要考虑这些数据的生命周期管理,即设置数据的老化机制,如是否需要根据时间划分数据存储等级、设定数据的保留时长等。 ClickHouse支持从分区、列、表等粒度对数据进行管理,如分区数据的迁移、删除,列、表的TTL设置。 热数据一般为最近几天或几周的数据,访问频率最高,通常采用SSD作为存储介质,达到存储时长后,会自动迁移至温数据区;而温数据一般为数月之内的数据,访问频次相对较低,通常采用普通机械盘作为存储介质。 对于Log或Metrics类型数据使用时间字段作为分区键和排序键,ClickHouse虽然没有提供基于时间的数据自动迁移(目前只提供基于分区大小的数据自动迁移),但可以利用其卷划分机制。 磁盘配置参数(disks标签) 策略配置参数(policies标签) 目前只能通过ALTER查询语句移动分区: 1)按照上述方式启动ClickHouse实例,并配置存储策略 查看磁盘配置: 查看策略配置: 2)创建一张MergeTree表用于测试 注意:需指定storage_policy,否则数据会写入默认存储路径中 3)写入测试数据 写入第一批数据,会创建一个分区目录: 写入第二批数据,会创建一个新的分区目录: 如果触发合并操作,会生成一个新分区目录: 注意:由多个disk组成的volume,每当生成一个新数据分区时,会依照disk定义的顺序,依次轮询写入 4)迁移数据分区到温数据区 注意:合并后尚未被清理的数据分区无法移动 可以通过物化视图同步MergeTree表中的数据到SummingMergeTree或AggregatingMergeTree表引擎中,利用既定的聚合条件得到趋势数据并存储。 注意:此处可以指定partition_id进行数据分区删除,如果partition_id是all,则无法直接删除。 在MergeTree中,可以为某个列字段或整张表设置TTL。当时间到达时,如果是列字段级别的TTL,则会删除该列的数据;如果是表级别的TTL,则会删除整张表的数据;如果同时设置了列级别和表级别的TTL,则会以先到期的那个为主。 1)列级别TTL 2)表级别TTL 注意:ClickHouse没有提供删除TTL声明的方法,但提供了控制全局TTL合并任务的启停方法:

clickhouse安装与启动

首先,您需要添加官方存储库: 然后运行命令安装: 日志文件将输出在/var/log/clickhouse-server/文件夹。 如果服务器没有启动,检查/etc/clickhouse-server/config.xml中的配置。 更改目录/etc/clickhouse-server: 更改目录/var/log/clickhouse-server: 这个是数据存储的位置,再config配置文件中,该路径也需要设置属主 修改时区为 : Asia/Shanghai 对外开放连接:取消<listen_host>::</listen_host> 注释 后台启动 ClickHouse支持访问限制设置。它们位于users.xml文件(与config.xml同级目录)。 默认情况下,允许default用户从任何地方访问,不需要密码

clickhouse 插入报错

数据存储使用clickhouse在批量插入的时候报错,报错提示信息如上所示,原因是: 插入String类型的列中包含了汉字,clickhouse对于汉字的存储有问题,将汉字在存储时转换为unicode就可以了,网上查不到,方便大家

ClickHouse 备份恢复

目前Clickhouse的备份方式有以下几种: clickhouse中,数据文件大小为 900M,实际导出会远大于900M,语句 20G左右【测试时没执行完成】 需要先建好表,因此最好备份下metadata数据 语法: 该操作为指定分区创建一个本地备份。 如果 PARTITION 语句省略,该操作会一次性为所有分区创建备份。整个备份过程不需要停止服务 默认位置:/var/lib/clickhouse/shadow/,若没执行过则还不存在此文件,会生成在设置的数据路径下 查看备份 因为 /shadow/ 目录下次备份时候需要清空,因此将备份迁移到指定路径 vi /etc/clickhouse-backup/config.yml 备份语法: clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name> 恢复语法: clickhouse-backup restore 备份名称 当前测试恢复数据的版本是 20.5.4.40,备份是直接存在 metadata 信息的 当前备份 由于clickhouse-backup 当前版本不会备份metadata,因此自己复制一份metadata数据

ClickHouse删除大表报错处理方法

这个是ClickHouse保护大表被误删的动作,有两个方法可以解除这个限制。 意思是删除大于50G的表都会提示无法删除,设置为0的就不会报告警提示。 sudo touch /data/clickhouse/flags/force_drop_table && sudo chmod 666 /data/clickhouse/flags/force_drop_table sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data CK会从另外一个备份中恢复数据。这里是CK自带的故障恢复机制,前提是使用复制表(Replicated开头),本质是告诉CK,强制重建数据。 问题分析: 启动时,检查本地文件系统中的数据集是否与预期的数据集(ZooKeeper中信息)一致。如果存在轻微的不一致,系统会通过与副本同步数据来解决,如果系统检测到损坏的数据片段(如文件大小错误)或无法识别的片段(写入文件系统但未记录在ZooKeeper中的部分),则会把它们移动到 ‘detached" 子目录(相当于逻辑删除),然后再从其他备份中去恢复这个数据片段。 但是注意这里是有一个安全机制的,即CK判断你损坏的片段大于一定的值(max_suspicious_broken_parts,对应源码图二中的逻辑),即“本地数据集与预期数据的差异太大”,CK将会拒绝帮你自动修复,并抛出异常、阻塞启动,这个时候你就必须手动执行恢复。 通过查询配置得到,max_suspicious_broken_parts参数的默认值是10。

给ClickHouse增加内存

在执行一个较为复杂的SQL聚合的时候,报错了: 【报错】 DB::Exception: Allocator: Cannot mmap 64.00 MiB., errno: 12, strerror: Cannot allocate memory. 可见是内存不够了(CK虽然是分布式存储但是集中计算) 一个办法是修改SQL,比如说用临时表之类的,但是那多麻烦啊。我决定先用swap内存试试。 我是跑完了SQL以后查看的,所以used是474 . 不是0。 嗯,SQL正常执行。 还有一点需要指出,虽然CK是分布式存储,但是在执行聚合运算的时候,仍然是在单机上,所以会比较消耗内存。 如果想增加空间,先关闭: sudo swapoff /swapfile 后续步骤跟之前一样即可。

clickhouse执行doinst.sh报错:非法指令

系统bug,网络问题。1、系统bug是clickhouse软件系统出现了问题导致执行doinst.sh报错非法指令,等待官方修复即可。2、网络问题是自身设备连接的网络出现较大波动,导致clickhouse软件执行doinst.sh报错非法指令,更换网络重新打开即可。

ClickHouse 表的常用操作

对表的操作的完整文档,请参看 ClickHouse 官方文档: https://clickhouse.com/docs/en/ 。 从集群中同步地删除表 这样能避免频繁重建表时的「Table columns structure in ZooKeeper is different from local table structure」错误。 清除表中所有数据

ClickHouse可视化工具DBM

GitHub地址 GitHub DBM是ClickHouse可视化数据工具。它基于ClickHouse原生Http请求构建,支持大量ClickHouse工作,主要支持以下功能点: 我们看一下它的全景! 编辑器配置

python 操作clickhouse

pip install clickhouse pip install clickhouse_driver from clickhouse_driver import Client clickhouse_user = "name" clickhouse_pwd = "pass" clickhouse_host_sq = "ip" clickhouse_database = "db" begin_time="2019-05-06" end_time="2019-05-12" client = Client(host=clickhouse_host_sq,user=clickhouse_user , database=clickhouse_database, password=clickhouse_pwd) api_interface_sql = "select accountName,count(*) as count,sum(backendTime) as sum from logs " "where date>="{}" and date<="{}" and appName = "service_si_new" and backendName != "" group by accountName order by count desc limit 0,10" .format(begin_time,end_time) try: a=client.execute(api_interface_sql) print(a) except Exception as e: print(e)

clickhouse去重不完全

ClickHouse不要求主键唯一,所以您可以插入多条具有相同主键的行,确保去重成功。每次批量写入,一定要做一批去重。去重语句如下:optimizetablemytableNamefinal。但是查询可以做到去重,达到目的。

droppartitionclickhouse是异步么

droppartitionclickhouse是异步么是异步的。它是计算机程序中的一个命令。据相关资料查询显示该命令是异步执行的,可以通过查看表system.mutations来查看命令的是否执行。clickhouse默认是不支持实时删除表中的数据,数据的删除通常是异步进行。

clickhouse插入分布式表没反应

数据丢失。clickhouse插入分布式表没反应是在ES中比较常见的写Rejected导致数据丢失、写入延迟等问题,在ClickHouse中不容易发生。查询速度快,官方宣称数据在pagecache中,单服务器查询速率大约在2-30GB/s。

win7上安装 clickhouse可以吗?

1准备测试用虚拟机clickhouse安装只有一个必须条件:Linux,x86_64和SSE 4.2。可以使用下面这个指令看下支不支持你的系统grep -q sse4_2 / proc / cpuinfo &&回显“支持SSE 4.2” || 回显“不支持SSE 4.2”下面采用的是ubuntu18.04系统,因为官方中默认是ubuntu,由于是测试所以就没有使用centos。首先准备了3台虚拟机进行测试(实际上clickhouse没有要求用几台,如果你是搭着玩玩,甚至都可以用一台也可以工作或使用docker,我这里主要是为了以后要做演示做的);配置是CPU 1CORE,RAM 1G-----------------------------vms001 192.168.56.11vms002 192.168.56.12vms003 192.168.56.13------------------------------clickhouse安装及配置3台虚拟机ip信息2下载并安装clickhouse服务器端和客户端安装clickhouse有多种方法:如果您的服务器连接不上外网,那么会比较麻烦,需要自己手工去官网下载安装包(http://repo.yandex.ru/clickhouse/deb/stable/main/)同样针对centos也有相应的这些包的只是叫rpm包(https://packagecloud.io/Altinity/clickhouse)。一共下载下面几个包:#基础包clickhouse-common-static_18.14.17_amd64.deb clickhouse-server-base_18.14.17_amd64.deb clickhouse-server-common_18.14.17_all.deb clickhouse-compressor_1.1.54318_amd64.deb #密码clickhouse-client_18.14.17_all .deb clickhouse-server_18.14.17_all.deb #选装包(都是测试调试用的)clickhouse-test_18.14.17_all.deb clickhouse-common-static-dbg_18.14.17_amd64.deb#可选项sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 #获取并设置安装包源echo“ deb http://repo.yandex.ru/clickhouse/deb/stable/ main /” | sudo tee /etc/apt/sources.list.d/clickhouse.list#更新包sudo apt-get update #安装clickhouse-server clickhouse-client sudo apt-get install -y clickhouse-server clickhouse-client只要跑完上面的命令,这样clickhouse就算安装好了。clickhouse安装及配置完整的安装过程3 clickhouse配置文件说明在上面的安装完后,接下来就可以开始启动服务了。#启动clickhouse-serversudo服务clickhouse-服务器启动在启动之后通过ps -ef | grep clickhouse可以发现他就使用了一个配置文件clickhouse安装及配置Clickhouse服务clickhouse-server使用的入口配置文件只有一个config.xml下面我们进入配置文件中心看下都有一些文件(/ etc / clickhouse-server /):config-preprocessed.xml(这个是动态生成的,这可以不用重启服务也能实时生效配置文件)config.xml(主要的配置文件控制未来的很多子配置文件,如users.xml,metrika.xml)users-preprocessed.xml(这个是动态生成的,这可以不用重启服务也能实时实现配置文件)users.xml(主要是配置用户信息的)metrika.xml(这个文件是后来手工创建的,主要是将include_from的例程的配置文件分离到这里来,提高config.xml文件的扭曲性,我采用调整路径到当前/ etc / clickhouse-server /下方便些)4配置文件修改1.为了配置文件统一管理,需要添加如下副本(从到统一的配置文件中调整include_,因为替换的路径是/etc/metrika.xml)<include_from> /etc/clickhouse-server/metrica.xml </ include_from>2.创建metrica.xml,将合并信息调整到metrica.xml文件中,而原来的config.xml中的积累信息需要做删除与调整。clickhouse安装及配置调整config.xml的体现信息在新建的metrica.xml中需要配置相应的充分信息,由于我使用是3台服务器,所以我需要配置3个副本,mycluster是重新命名,下面有3个shard,没有副本。<yandex> <clickhouse_remote_servers> <mycluster> <shard> <replica> <host> 192.168.56.11 </ host> <port> 9000 </ port> </ replica> </ shard> <shard> <replica> <host> 192.168.56.12 </ host> <port> 9000 </ port> </ replica> </ shard> <shard> <replica> <host> 192.168.56.13 </ host> <port> 9000 </ port> </ replica > </ shard> </ mycluster> </ clickhouse_remote_servers> </ yandex>这样就配置完毕了。5启动服务和使用客户端工具连接clickhouse在3台服务器中执行启动服务:服务Clickhouse-服务器启动在任何一台服务器上执行客户端工具命令:clickhouse-clientroot @ vms001:u301c#clickhouse-client ClickHouse客户端版本18.14.17。连接到本地主机:9000。已连接到ClickHouse服务器版本18.14.17修订版54409。vms001 :)显示数据库;SHOW DATABASES ┌─name────┐ ││默认│系统│ └─────────┘ 在一套2行。耗时:0.002秒。vms001 :)使用系统;使用系统确定。设置0行。耗时:0.001秒。vms001 :)显示表格;SHOW TABLES ┌─name───────────────────────────┐ │aggregate_function_combinators│ ││asynchronous_metrics │build_options│ ││群││排序│列││data_type_families│ │数据库│ │字典│ │活动│ │格式│ │功能│ │graphite_retentions│ │宏│ │merge_tree_settings│ │合并│ │指标│ │型号│ │突变│ │号│ │numbers_mt│ │一个│ │件│ │parts_columns│ │过程│ │副本│ │replication_queue│ │设置│ │table_engines│ │table_functions│ │表│ └──────────────────────── ────────┘一组31行。耗时:0.004秒。vms001 :)在执行查看生成的表select * from system.clusters就可以看到看到的信息了,系统信息全部在表system中;clickhouse安装及配置发挥上的3个例程整个clickhouse就这么简单的安装完成了,只是没有做副本以及高可用。

Clickhouse的稀疏索引以及"8192"的含义

相信用过Clickhouse的MergeTree引擎的同学都有听说过稀疏索引以及设置过"8192"这个参数,但是官网的案例说明比较晦涩,我一开始也是理解得云里雾里。后面是看到Alexey Milovidov写的一篇介绍,才算是理解了其实的奥秘。把我所了解到的分享给大家,希望对大家也有帮助。 从官网的Demo开始。官网给的介绍案例是以(CounterID、Date)这2个键来建立索引,可以看到一对的(CounterID、Date)间隔地生成了一个Marks,例如(a,1),(a,2);根据Marks又生成了相应的Marks numbers。那么"8192"这个index_granularity参数又是用来做什么的呢?大家可以看下(a,1),(a,2)这2个索引之间,间隔了好几个数据,即: (1)index_granularity这个参数规定了数据按照索引规定排序以后,间隔多少行会建立一个索引的Marks,即索引值 (2)稀疏索引的意义即是Clickhouse不对所以的列都建立索引(相比较Mysql的B树索引会为每行都建立),而是间隔index_granularity列才建立一个。 (3)Marks与Marks number均被保存在内存中,利于查询的时候快速检索。 clickhouse针对每一列都进行了分别存储,并生成了.bin以及.mrk两个文件。bin文件存储了真正的列的值(内部又设计列的压缩),mrk文件记录了Mark numbers对应这个列的offset。以官网例子为例,Marks numbers为3对应了CounterID取值为[b,c,d,e]4个字符,查询命中Marks numbers=3时,通过CounterID的mrk文件就可以知道这4个字符在CounterID的bin文件中存储的offset,提高查询性能。 (1)虽然是稀疏索引,但是如果索引中的列过多,则根据索引来划分数据会更稀疏,建立的索引也需要更多,影响写入性能,也会增加内存的使用 (2)相比普通的B树索引,稀疏索引需要的内存更少,但是可能导致需要扫描的行数比实际的多(以官网demo为例,例如查询(e,1)命中第3个索引,则需要扫描{index_granularity}行的数据,但是其实内部(e,1)的数据只占了少部分,带来了无效扫描) (3)官网推荐是不需要去改"8192"这个值。我个人认为是除非你要做为索引的这个列的值分布非常非常集中,可能几w行数据才可能变化一个取值,否则无需去做调大去建立更稀疏的索引,不过如果这个列这个集中的分布,也不大适合作为索引;如果要调小这个值,是会带来索引列增加,但是同样也会带来内存使用增加、写入性能受影响。 (4)有2个列组合做组合索引,一个值比较稀疏、一个值比较集中,要选稀疏的值放在第一位。只能选择一个列做单索引,如果有2个备选的值,要选比较稀疏的。 ClickHouse Primary Keys

clickhouse使用虚拟内存

会使查询变慢。根据查询相关公开信息显示,clickhouse使用虚拟内存,物理内存和虚拟内存的数据交换,会导致查询变慢,可以关闭虚拟内存。内存是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

如何使用NineData GUI创建ClickHouse数据表​?

NineData GUI 是一款基于 ClickHouse 数据库的 GUI 工具,可以帮助用户更方便地进行数据管理和查询操作。下面是使用 NineData GUI 创建 ClickHouse 数据表的步骤:打开 NineData GUI,并连接到 ClickHouse 数据库。在导航栏中选择 “Table Editor”(数据表编辑器)选项卡。点击 “Create Table” 按钮创建新的数据表。在弹出的窗口中,输入数据表的名称和字段信息。例如:CREATE TABLE IF NOT EXISTS test_table (id UInt32,name String,age UInt8) ENGINE = MergeTree() PRIMARY KEY id在这个例子中,我们创建了一个名为 test_table 的数据表,包含三个字段:id、name 和 age。其中,id 的数据类型是 UInt32,name 的数据类型是 String,age 的数据类型是 UInt8。我们还指定了 MergeTree 引擎和 id 字段为主键。点击 “Create Table” 按钮,保存新的数据表。通过以上步骤,您就可以使用 NineData GUI 创建 ClickHouse 数据表了。请注意,NineData GUI 还支持其他的数据表管理和查询操作,可以根据您的需要进行使用。

clickhouse数据压缩对比

Clickhouse 数据压缩主要使用两个方案LZ4和ZSTD LZ4解压缩速度上会更快,但压缩率较低, ZSTD解压缩较慢。但是压缩比例较高。 clickhouse不同压缩算法测试对比,LZ4最优。 https://www.percona.com/blog/2016/04/13/evaluating-database-compression-methods-update 以下测试主要验证业内测试的结论,测试的zstd数据会多一点,测试不是十分严谨,仅供参考。 开发(dev) 机器数量:3 cpu:40core 内存:256G disk:2.0T*10 kafka TOPIC: cdn-log-analysis-realtime。可消费数据总量363255827。数据消费4次到ck。 cdn_log_analysis_realtime lz4压缩 cdn_log_realtime zstd压缩 在/etc/metrika.xml <compression incl="clickhouse_compression"> --指定incl <case> <min_part_size>10000000000</min_part_size> --数据部分的最小大小 <min_part_size_ratio>0.01</min_part_size_ratio> --数据部分大小与表大小的比率 <method>zstd</method> --压缩算法,zstd和lz4 </case> </compression> 执行sql :SELECT table AS 表名 , sum(rows) AS 总行数 , formatReadableSize(sum(data_uncompressed_bytes)) AS 原始大小 , formatReadableSize(sum(data_compressed_bytes)) AS 压缩大小 , round((sum(data_compressed_bytes)/sum(data_uncompressed_bytes))*100, 0) AS 压缩率 FROM system.parts WHERE (database IN ("default") AND (table = "cdn_log_analysis_realtime") ) GROUP BY table 分别查看不同机器的压缩比例 平均 4.85亿 数据,原始数据 105G 压缩后数据 27G ,平均压缩率 27% 。 执行sql : select toDateTime(intDiv(toUInt32(its),60)*60) as t, count() as t_c, avg(speed) as t_v, quantile(0.99)(speed) as t_99, quantile(0.90)(speed) as t_90 , quantile(0.75)(speed) as t_75 , quantile(0.50)(speed) as t_50 , quantile(0.25)(speed) as t_25 from default.cdn_log_analysis_realtime_all where day="2020-12-17" group by t order by t_v desc 冷数据(第一次查询) 热数据(第二次查询) 执行sql : SELECT table AS 表名 , sum(rows) AS 总行数 , formatReadableSize(sum(data_uncompressed_bytes)) AS 原始大小 , formatReadableSize(sum(data_compressed_bytes)) AS 压缩大小 , round((sum(data_compressed_bytes)/sum(data_uncompressed_bytes))*100, 0) AS 压缩率 FROM system.parts WHERE (database IN ("default") AND (table = "cdn_log_realtime") ) GROUP BY table 分别查看不同机器的压缩比例 执行sql :select toDateTime(intDiv(toUInt32(its),60)*60) as t, count() as t_c, avg(speed) as t_v, quantile(0.99)(speed) as t_99, quantile(0.90)(speed) as t_90 , quantile(0.75)(speed) as t_75 , quantile(0.50)(speed) as t_50 , quantile(0.25)(speed) as t_25 from default.cdn_log_realtime where day="2020-12-25" group by t order by t_v desc 冷数据(第一次查询) 热数据(第二次查询) 执行sql:SELECT "ZSTD" as 压缩方式 , table AS 表名 , sum(rows) AS 总行数 , formatReadableSize(sum(data_uncompressed_bytes)) AS 原始大小 , formatReadableSize(sum(data_compressed_bytes)) AS 压缩大小 , round((sum(data_compressed_bytes)/sum(data_uncompressed_bytes)) 100, 0) AS 压缩率 FROM cluster(ctyun31, system, parts) WHERE (database IN ("default") AND (table = "cdn_log_realtime") ) GROUP BY table union all SELECT "LZ4" as 压缩方式 , table AS 表名 , sum(rows) AS 总行数 , formatReadableSize(sum(data_uncompressed_bytes)) AS 原始大小 , formatReadableSize(sum(data_compressed_bytes)) AS 压缩大小 , round((sum(data_compressed_bytes)/sum(data_uncompressed_bytes)) 100, 0) AS 压缩率 FROM cluster(ctyun31, system, parts) WHERE (database IN ("default") AND (table = "cdn_log_analysis_realtime") ) GROUP BY table 测试不是十分严谨,ZSTD的ck表的数据多一点,但是不影响测试结果,仅做参考。 压缩能力上,ZSTD的压缩比例为 22% ,LZ4的压缩比例为 27% ,ZSTD的压缩性能更好。但是效果不是很明显。 查询能力上,冷数据查询,两者相差不大。热数据方面,ZSTD为 3.884s ,而LZ4为 1.150s 。ZSTD查询时间在 3.37倍 以上,LZ4的查询能力更强。 综上所述,建议使用LZ4。 集群数据量后期预估,按当前使用lz4压缩方案,3分片1副本,计算3 5.5 10*0.8(按磁盘最多使用80%算) 的硬盘能存储大概多少数据。 一天数据100亿 一天磁盘消耗 (10000000000/1453023308.0 84.98)/1024.0=0.57TB 能存储天数 3 5.5 10 0.8/0.57=231.57 day。 一天数据1000亿 231.57/10=23.1day。

ClickHouse 数据迁移[remote表、clickhouse-copier]

clickhouse-copier是官方出的用来同步数据的工具,依赖zk来满足跨集群同步数据的场景。 假设我们要从cluster1[IP1,IP2,IP3]集群中拷贝table_dis到cluster2[IP4,IP5]中。table_dis是distributed table,对应的mergetree表为table_local (1)zk.xml 创建zk.xml文件,用于copy时候使用。 (2)schema.xml 用括号标注的变量需要根据实际情况更换。 在IP1中执行: clickhouse-copier copier --daemon --config zk.xml --task-path /[ZK-CLICKHOUSE-PATH/NODE] --base-dir /[PATH] --task-upload-force true --task-file schema.xml 测试在3台的集群1000w条的数据,写入2台的集群中,耗时在30s

where别名clickhouse

是。where别名是clickhouse。ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它是由俄罗斯公司Yandex于2016年6月15日开源的一个项目,简称为CH。

clickhouse使用一些优化和经验

1,查询强烈要求带上分区键过滤和主键过滤,如 where day = today() and itime = now()。 2,建表的时候,选择合适的分区键和排序键是优化的关键。 3,如果不允许重复主键(且不要求去重时效性),建议使用表类型:ReplicatedReplacingMergeTree 建表语句可参考 https://clickhouse.yandex/docs/en/operations/table_engines/replacingmergetree/ ,注意只能保证单节点的数据不重复,无法保证集群的。 4,如果要对某一列过滤,且该列非partition key和orderby key, 且该列过滤前后数据量差异较大,建议使用prewhere clause过滤。参考: https://clickhouse.yandex/docs/en/query_language/select/#prewhere-clause 。 5,日期和时间使用Date, DateTime类型,不要用String类型。 6,建表时,强烈建议低基数(基数小于10000)且类型为String的列,使用 LowCardinality 特性,例如国家(country),操作系统(os)皆可用LowCardinality。查询效益提高可以40~50%,具体参考 https://altinity.com/blog/2019/3/27/low-cardinality 。 7,为了使复杂查询尽量本地完成,提前减小数据量和网络传输,加快查询速度,创建分布式表时,尽量按照主键hash分shard。例如欲加快select count(distinct uid) from table_all group by country, os的查询速度. 创建分布式表table_all时,shard key为cityHash64(country, os),hash函数参考 https://clickhouse.tech/docs/en/sql-reference/functions/hash-functions/ 。 8,计算不同维度组合的指标值时,用with rollup或with cube替代union all子句。 9,建表时,请遵守命名规范:分布式表名 = 本地表名 + 后缀"_all"。 select请直接操作分布式表。 10,官方已经指出Nullable类型几乎总是会拖累性能,因为存储Nullable列时需要创建一个额外的文件来存储NULL的标记,并且Nullable列无法被索引。因此除非极特殊情况,应直接使用字段默认值表示空,或者自行指定一个在业务中无意义的值(例如用-1表示没有商品ID) 11,稀疏索引不同于mysql的B+树,不存在最左的原则,所以在ck查询的时候,where条件中,基数较大的列(即区分度较高的列)在前,基数较小的列(区分度较低的列)在后。 12,多表Join时要满足小表在右的原则,右表关联时被加载到内存中与左表进行比较 13,多维分析, 查询列不宜过多, 过滤条件带上分区筛选 (select dim1, dim2, agg1(xxx), agg2(xxx) from table where xxxx group by dim1, dim2 ) 14,禁止SELECT *, 不能拉取原始数据!!!! (clickhouse不是数据仓库, 纯粹是拉原始表数据的查询应该禁止,如 select a, b, c, f, e, country from xxx ) 分区键和排序键理论上不能修改,在建表建库的时候尽量考虑清楚 。 0,事实表必须分区,分区粒度根据业务特点决定,不宜过粗或过细。我们当前都是按天分区,按小时、周、月分区也比较常见(系统表中的query_log、trace_log表默认就是按月分区的)。 1,分区键能过滤大量数据,分区键建议使用toYYYYMMDD()按天分区,如果数据量很少,100w左右,建议使用toYYYYMM()按月分区,过多的分区会占用大量的资源,会对集群的稳定性造成很大的影响。 2,分区键必须使用date和datetime字段,避免string类型的分区键 3,每个sql必须要用分区键,否则会导致大量的数据被读取,到了集群的内存限制直接拒绝 4,排序键也是一个非常重要的过滤条件,考虑到ck是OLAP 库,排序键默认也是ck的主键,loap库建议分区键要使用基数比较少的字段,比如country就比timestramp要好。 5,不要使用过长的分区键,主键 。 6,CK的索引非MySQL的B树索引,而是类似Kafka log风格的稀疏索引,故不用考虑最左原则,但是建议基数较大的列(即区分度较高的列)在前,基数较小的列(区分度较低的列)在后。另外,基数特别大的列(如订单ID等)不建议直接用作索引。 分区数过多会导致一些致命的集群问题。 不建议分区数粒度过细,不建议分区数过多 ,经验来看,10亿数据建议1-10个分区差不多了,当然需要参考你的硬件资源如何。 1,select 查询性能降低,分区数过多会导致打开大量文件句柄,影响集群。 2,分区数过多会导致集群重启变慢,zk压力变大,insert变慢等问题。 https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/custom-partitioning-key/

clickhouse常见的一些问题

一般情况下,如果不是主动使用systemctl stop clickhouse-server 停止clickhouse 而是使用kill -9 pid关闭clickhouse,或者异常奔溃,那么如果一切正常的情况下clickhouse server 10s检测进程,自动重启。 登录机器cat /etc/cron.d/clickhouse-server */10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1 默认会10s检测一下服务进程是否正常,否则重启,检测时间可以调。/etc/init.d/clickhouse-server 在执行分布式DDL的时候出现这个问题一般是有一个节点处于假死状态,但是节点又没有完全奔溃,一般报错如下 Code: 159. DB::Exception: Received from xxxxx:29000. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000xxxxxxx is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background. distributed_ddl_task_timeout 执行超过了默认的180s。 首先检查异常节点机器网络,磁盘等信息,然后检查ck状态。一般都是磁盘满了或者网络问题,很少有zk集群出问题。处理方式的话都是清理磁盘和修复网络。 Code: 458, e.displayText() = DB::ErrnoException: Cannot unlink file /data2/clickhouse/store/488/488da1e0-a9ee-4191-8376-0daaa4e0314d/format_version.txt, errno: 2, strerror: No such file or directory (version 21.3.4.25 (official build)) clickhouse 集群在建分布式表的时候出现 clickhouse zookeeper All connection tries failed 如果配置没啥问题,zk和ck集群也没啥问题,重启下zk即可恢复 查询出现AST is too big. Maximum: 500000 程序报错AST is too big. Maximum: 500000,语法树元素个数超过限制错误,说明查询sql很长很复杂,一般情况不会有,要木优化sql,要木修改集群配置 在user.xml 添加 <max_ast_elements>10000000</max_ast_elements> <max_expanded_ast_elements>10000000</max_expanded_ast_elements> 报错 DB::Exception: Replica xxxxx already exists 。 CK会对同一个block保证重复插入的insert的幂等性,会检测重复,默认会去重,使用 insert_deduplicate 配置。如果不需要去重则可以使用 SET insert_deduplicate=0 ,但不推荐这样做。 查询超过了限制的时间(60s),需要优化sql,或者做预聚合 一次写入的分区数超过100,一般情况下不会出现一次写操作写100个分区的情况,解决方法1:查看写入的数据是否异常,为啥会写100个分区,一般是按时间分区,是不是时间解析错误了。解决方案2:在user.xml配置文件中添加<max_partitions_per_insert_block>配置项

clickhouse可以替代hadoop嘛

clickhouse不可以替代hadoop。Hadoop生态圈的技术繁多,HDFS一直用来保存底层数据,地位牢固。Hbase作为一款Nosql也是Hadoop生态圈的核心组件,它海量的存储能力,优秀的随机读写能力,能够处理一些HDFS不足的地方。Apache Kudu是Cloudera Manager公司16年发布的新型分布式存储系统,结合CDH和Impala使用可以同时解决随机读写和sql化数据分析的问题。分别弥补HDFS静态存储和Hbase Nosql的不足。Clickhouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),能够使用SQL查询实时生成分析数据报告。它同样拥有优秀的数据存储能力。

clickhouse-物化视图

https://clickhouse.tech/docs/en/sql-reference/statements/create/view/# 物化视图可以理解为一个预聚合触发器,数据在控制好触发的汇聚条件,几乎是实时的 物化视图会存储一份计算好的聚合数据,是一种空间换时间的绝妙方法,对集群的稳定性和很重要。 物化视图的建立有两种方法 1,使用TO关键字( 推荐使用 ),可以控制TTL,不能使用POPULATE 例: 2,使用默认表 此方案建议是数据量小的表,因为无法控制TTL,后期数据运维不方便。默认存储表在clickhouse中是 .inner_id.uuid 值作为表名 例: 1,物化视图是一种空间换时间的预聚合方式,聚合后的数据将存储在新表中,一般于SummingMergeTree,AggregatingMergeTree等聚合引擎一起使用。 2,物化视图因为是写入触发器,所以as select只对每批次的insert data有效果,所以即使是where条件也是对这批写入数据起效果( https://clickhouse.tech/docs/en/sql-reference/statements/create/view/#materialized ) 4,POPULATE关键字,不建议使用,会把原始表中的已存在数据全部物化一遍,老数据的同步,建议直接insert到mv中 5,多表join生成物化视图,左表插入数据时才更新 6,源表数据的改变不会影响物化视图,如update, delete, drop partition

clickhouse能覆盖数据吗

不能。数据覆盖是数据恢复行业的专业词汇,指的是在我们删除数据后,如果之后又有其他数据对其原有的部分或全部存储空间进行占据,则称之为覆盖。一旦出现数据覆盖情况是无法对数据进行恢复的。clickhouse称为列式储存,可以通过数据能否恢复来看能否覆盖数据。通过资料查找可以发现数据是可以恢复的,也就是说数据并不会被覆盖。当储存文件里的内容删除掉时,恢复原文件里面的内容也没有办法找回;当原文件里的内容还存在时,恢复原文件可以看到里面的内容。

ClickHouse集群部署

下文以 常见ClickHouse集群部署架构 中 方案四 的部署架构为例。 准备Docker环境: 其中,主配置文件 conf/zoo.cfg的关键配置项: ClickHouse最重要的配置有clickhouse_remote_servers、zookeeper和macros。 主配置文件,设置成可加载其他相关配置文件。 用于配置集群、数据副本、Zookeeper等。如果使用 方案一 ,此处配置需修改。 宏定义,后面创建本地表时会引用到。比如: 查看数据表: 主副本的分布表: 副副本的分布表: node21节点主副本的本地表: node23节点副副本的本地表:

分布式物化视图在clickhouse如何实现?

物化视图在数据层面做指标大宽表有着举足轻重的作用,分布式物化视图是对物化视图存储的数据进行分布式读取。 之前我们有一个介绍过物化视图的文章,详情请点击:clickhouse物化视图的应用,这里我们已经介绍过物化视图是什么,如何使用。 下面我们这里来介绍一下分布式物化视图的使用。我们这里使用的是分布式clickhouse集群。版本是:20.3.10.75,下面我们就来详解分布式物化视图在clickhouse的使用。 1:首先我们还是来建立三个表。 2:分别在不同的节点插入数据,我这里有两个节点,我们每个节点插入2条数据。 节点1如下: 节点2如下: 3:插入完数据之后,我们去每个节点查询,因为我们需要读所有的数据,则我们需要建一下分布式表来读数据。下面是建分布式表的语句。 建立好上面的分布式表之后就能读集群所有节点的数据了。我这里贴一下user表的所有数据。 4:上面是基础的数据表,这里我们开始建物化视图表。下面的sql是把用户表,用户信息表,绑定表进行组合成大宽表,下面的脚本我们是在每个节点上存了一份快照,实际业务中我们是写数据到一个节点,不会一份数据存多份。我这里做例子就这么使用。 5:上面的物化视图表我们建立好了,下面我们在物化视图表上建分布式表。 好了,到这里我们已经可以通过物化视图分布式表读每个节点的物化视图了,业务中我们基于物化视图来做大宽表,读取物化视图分布式表是非常常见的。我之前记得之前clickhouse物化视图在微信的应用这篇文章也是比较类似。 总结 :

ClickHouse数据压缩

ClickHouse支持多种方式的数据压缩:LZ4和ZSTD。 关于压缩算法的测试,见 这篇文章 。简而言之,LZ4在速度上会更快,但是压缩率较低,ZSTD正好相反。尽管ZSTD比LZ4慢,但是相比传统的压缩方式Zlib,无论是在压缩效率还是速度上,都可以作为Zlib的替代品。 下面我们对比一下这两种压缩方式。压缩测试所用的表(lineorder)结构和数据来自 这里 。未压缩的数据集是680GB。 把上述数据加载到ClickHouse后,默认的LZ4压缩算法下,数据容量是184G(压缩到27%),而ZSTD达到了135GB(压缩到20%)。 如果想要使用ZSTD压缩方式,修改为如下配置即可: 压缩比率对比 压缩后的查询性能如何,我们来跑如下查询看看: 为了保持客观,查询测试会跑两次,第一次是冷数据请求,这次的数据没有被操作系统缓存,第二次是热数据情求,这次的数据已经被操作系统的内存缓存了。 LZ4的性能如下: ZSTD性能如下: 冷数据查询情况下,两者区别不大,因为消耗在IO方面的时间,远大于消耗在数据解压缩上面的时间。 热数据请求下,LZ4会更快,此时IO代价小,数据解压缩成为性能瓶颈。 综上所述,默认的LZ4压缩方式,会给我们提供更快的执行效率,但是同时需要占用较多的磁盘容量。 ClickHouse抛开高效的SQL执行效率,数据压缩比率也是一个非常喜人的地方。使用Hadoop Node低配置服务器,再加上ClickHouse优秀的压缩性能,单机容量轻松可达几十T,推荐直接使用默认的LZ4压缩方式,用可以接受的少量空间来换查询执行效率的提升。

clickhouse与kafka集成

clickhouse支持与多种存储引擎集成,可以从集成的引擎里面读取消息,然后写到真正的数据存储表里。 clickhouse批量写入的性能比较好,我们的业务场景下会大批量的产生数据,如果使用clickhouse-jdbc去写的,写入时机和每批次写入的数量不好把控,最终选择了先将消息写入kafka,然后由clickhouse从kafka消费数据,clickhouse server消费到数据之后写入真正的数据表。 clickhouse集成kafka引擎见官方文档: https://clickhouse.com/docs/zh/engines/table-engines/integrations/kafka/ 下面的介绍会与官方文档有重复,然后补充一些集成过程中遇到的坑。 下面介绍clickhouse与kafka集成的步骤,clickhouse版本是22.1.3.7 必要参数 可选参数 关于必选参数中的kafka_format参数,参见Formats部分,format具体解释如下 https://clickhouse.com/docs/zh/interfaces/formats/ 。 JSONEachRow, JSONStringsEachRow, JSONCompactEachRow, JSONCompactStringsEachRow 这几种格式,ClickHouse会将行输出为用换行符分隔的JSON值,这些输出数据作为一个整体时,由于没有分隔符(,)因而不是有效的JSON文档。 官方文档给了一些示例。 由于我的真实的数据表,有一个字段是json类型的字符串,但是一开始设置kafka_format的类型为JSONEachRow时,从kafka消费数据会报错,所以kafka_format格式设置成了JSONAsString,具体的错误后面贴出来。 创建kafka引擎表,用于从kafka消费数据 由于我的数据结构里有嵌套json,如果使用JSONEachRow,有个字段是json类型的字符串,带转义字符,导致clickhouse解析失败,没找到解决办法,所以使用了JSONAsString格式。 一个简单的MergeTree引擎的表,其中content是json格式的字符串。 创建的物化视图用于把从kafka消费到的数据,写到真实的数据表里,在这个例子里,msg_json_source从kafka消费到数据,然后通过物化视图msg_json_source_consumer将消费到的数据写到真实的数据表msg_target中。 由于从kafka消费到的数据就是一个json字符串,在这里使用JSONExtractString等json字段提取工具,提取msg里的字段,比如biz,sender_id,content等字段。 status_time原本计划用DatTime64类型的,但是这个时间格式有坑,最终选择了使用UInt64存毫秒级时间戳,具体的问题下面再介绍。 在clickhouse创建好3张表之后(kafka引擎表,真实数据表,物化视图表),往kafka发消息 本地安装一个简易的kafka服务端,然后创建topic 创建好topic之后,使用Java客户端往kafka发消息,使用confluent client发也可以。 添加kafka依赖 实体类,使用fastjson的@JSONField注解,实体类转字符串的时候,将驼峰转换为下划线 测试类 最终发送完,我们查看一下clickhouse里的数据表的数据,可以发现我们发送到kakfa里的数据,已经成功的消费,并且写入到真实的数据表里了。 当时测试环境部署的版本是21.9,但是这个版本有问题,不推荐安装,建议直接部署22以上的clickhouse 我一开始就是使用的JSONEachRow格式,但是我的消息体里还有嵌套的json,类似下面这种格式,里面有个字段还是个json,转行成字符串带转义字符。 然后消息体的string字符串贴一条在这里 然后clickhouse解析消息体报错,当时的错找不到了,现在复现不出来了,非常的难顶。。。。 后来因为赶版本的原因把kafka_format换成了JSONAsString。 clickhouse是支持DateTime64格式的,可以到毫秒级,但是实际使用过程中却有些坑在, 首先是有的客户端解析毫秒字符串有问题,其次是使用JSONExtract*的方法,会有差异,再然后是jdbc查询的时候,也会导致时间查询有问题。 拿毫秒时间戳和秒级时间戳做试验,clickhouse-server版本是22.3.1.1 把上面的kafka引擎表拿出来改一下 其中status_time这个字段的类型改成DateTime64(3, "Asia/Shanghai"),使用JSONExtractUInt提取时间,看下效果 首先发条数据,数据内容如下 传入的是毫秒级时间戳,然后数据表存储的时候就变成了2282年 然后如果传入秒级的时间戳,真实的数据是这样 clickhouse存储的时候看着时间正常了,但是毫秒丢失了 然后修改一下物化视图的字段提取方式,之前是 JSONExtractUInt(msg,"status_time") as status_time,现在改成使用 JSONExtractString(msg,"status_time") as status_time提取时间 会发现时间类型又正常了。 这一条数据内容如下 最终使用JSONExtractString提取毫秒时间戳,得到了正确的DateTime64的时间,非常的神奇 最终我决定来了个釜底抽薪的方法,时间直接用UInt64存,因为我发送出去的数据是毫秒级时间戳,最终存时间戳,查询时间范围的时候直接用long类型的数据between好了。 这也是无奈之举,万一哪天server更新版本,导致时间出现问题,那就完蛋了,希望后面时间可以稳定一点吧。

clickhouse能取代hive吗

可以的ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。由号称“俄罗斯 Google”的Yandex开发而来,在2016年开源,在计算引擎里算是一个后起之秀,在内存数据库领域号称是最快的。由于它有几倍于GreenPlum等引擎的性能优势,所以不少人都选择将其安装云服务器中使用。ClickHouse是一个列导向数据库,是原生的向量化执行引擎。它在大数据领域没有走Hadoop生态,而是采用Local attached storage作为存储,这样整个IO可能就没有Hadoop那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持shard+replication这种解决方案。它还提供了一些SQL直接接口,有比较丰富的原生client。以下是ClickHouse作为分析型数据库的特点:一. 速度快ClickHouse性能超过了市面上大部分的列式存储数据库,相比传统的数据ClickHouse要快100-1000倍,ClickHouse还是有非常大的优势。100Million 数据集:ClickHouse比Vertica约快5倍,比Hive快279倍,比MySQL快801倍。1Billion 数据集:ClickHouse比Vertica约快5倍,MySQL和Hive已经无法完成任务了。二. 功能多ClickHouse支持数据统计分析各种场景:1.支持类SQL查询;2.支持繁多库函数(例如IP转化,URL分析等,预估计算/HyperLoglog等);3.支持数组(Array)和嵌套数据结构(Nested Data Structure);4.支持数据库异地复制部署。三. 文艺范不理睬Hadoop生态,走自己的路。目前任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。而ClickHouse的缺点:1.不支持Transaction:想快就别想Transaction;2.聚合结果必须小于一台机器的内存大小:不是大问题;3.缺少完整的Update/Delete操作;4.支持有限操作系统。

篇二|什么是ClickHouse的表引擎?

在上一篇分享中,我们介绍了ClickHouse的安装部署和简单使用。本文将介绍ClickHouse中一个非常重要的概念— 表引擎(table engine) 。如果对MySQL熟悉的话,或许你应该听说过InnoDB和MyISAM存储引擎。不同的存储引擎提供不同的存储机制、索引方式、锁定水平等功能,也可以称之为 表类型 。ClickHouse提供了丰富的表引擎,这些不同的表引擎也代表着不同的 表类型 。比如数据表拥有何种特性、数据以何种形式被存储以及如何被加载。本文会对ClickHouse中常见的表引擎进行介绍,主要包括以下内容: Log系列表引擎功能相对简单,主要用于快速写入小表(1百万行左右的表),然后全部读出的场景。 即一次写入多次查询 。 该引擎适用于 一次写入,多次读取的场景 。对于处理小批数据的中间表可以使用该引擎。值得注意的是,使用大量的小表存储数据,性能会很低。 进入默认数据存储目录,查看底层数据存储形式,可以看出: TinyLog 引擎表每一列都对应的文件 当我们执行 ALTER操作 时会报错,说明该表引擎不支持ALTER操作 相比TinyLog而言,StripeLog拥有更高的查询性能(拥有.mrk标记文件,支持并行查询),同时其使用了更少的文件描述符(所有数据使用同一个文件保存)。 进入默认数据存储目录,查看底层数据存储形式 可以看出StripeLog表引擎对应的存储结构包括三个文件: Log引擎表适用于临时数据,一次性写入、测试场景。Log引擎结合了TinyLog表引擎和StripeLog表引擎的长处,是Log系列引擎中性能最高的表引擎。 进入默认数据存储目录,查看底层数据存储形式 Log引擎的存储结构包含三部分: 在所有的表引擎中,最为核心的当属MergeTree系列表引擎,这些表引擎拥有最为强大的性能和最广泛的使用场合。对于非MergeTree系列的其他引擎而言,主要用于特殊用途,场景相对有限。而MergeTree系列表引擎是官方主推的存储引擎,支持几乎所有ClickHouse核心功能。 MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据片段不可修改。为了避免片段过多,ClickHouse会通过后台线程,定期合并这些数据片段,属于相同分区的数据片段会被合成一个新的片段。这种数据片段往复合并的特点,也正是合并树名称的由来。 MergeTree作为家族系列最基础的表引擎,主要有以下特点: 查看一下数据存储格式,可以看出,存在三个分区文件夹,每一个分区文件夹内存储了对应分区的数据。 进入一个分区目录查看 可以看出,新插入的数据新生成了一个数据块,并没有与原来的分区数据在一起,我们可以执行 optimize 命令,执行合并操作 执行上面的合并操作之后,会新生成一个该分区的文件夹,原理的分区文件夹不变。 上文提到 MergeTree 表引擎无法对相同主键的数据进行去重,ClickHouse提供了ReplacingMergeTree引擎,可以针对相同主键的数据进行去重,它能够在合并分区时删除重复的数据。值得注意的是, ReplacingMergeTree 只是在一定程度上解决了数据重复问题,但是并不能完全保障数据不重复。 当我们再次向该表插入具有相同主键的数据时,观察查询数据的变化 从上面的示例中可以看出,ReplacingMergeTree是支持对数据去重的,那么是根据什么进行去重呢?答案是: ReplacingMergeTree在去除重复数据时,是以ORDERBY排序键为基准的,而不是PRIMARY KEY 。我们在看一个示例: 再次向该表中插入相同emp_id和name的数据,并执行合并操作,再观察数据 至此,我们知道了ReplacingMergeTree是支持去重的,并且是按照 ORDERBY排序键 为基准进行去重的。细心的你会发现,上面的重复数据是在一个分区内的,那么如果重复的数据不在一个分区内,会发生什么现象呢?我们再次向上面的 emp_replacingmergetree1 表插入不同分区的重复数据 ReplacingMergeTree在去除重复数据时,是以ORDERBY排序键为基准的,而不是PRIMARY KEY。 在执行分区合并时,会触发删除重复数据。optimize的合并操作是在后台执行的,无法预测具体执行时间点,除非是手动执行。 ReplacingMergeTree是以分区为单位删除重复数据的。只有在相同的数据分区内重复的数据才可以被删除,而不同数据分区之间的重复数据依然不能被剔除。 如果没有设置 [ver]版本号 ,则保留同一组重复数据中的最新插入的数据; 如果设置了 [ver]版本号 ,则保留同一组重复数据中 ver字段取值最大的那一行 。 一般在数据量比较大的情况,尽量不要使用该命令。因为在海量数据场景下,执行optimize要消耗大量时间 该引擎继承了MergeTree引擎,当合并 SummingMergeTree 表的数据片段时,ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值,即如果存在重复的数据,会对对这些重复的数据进行合并成一条数据,类似于group by的效果。 推荐将该引擎和 MergeTree 一起使用。例如,将完整的数据存储在 MergeTree 表中,并且使用 SummingMergeTree 来存储聚合数据。这种方法可以避免因为使用不正确的主键组合方式而丢失数据。 如果用户只需要查询数据的汇总结果,不关心明细数据,并且数据的汇总条件是预先明确的,即 GROUP BY的分组字段是确定的 ,可以使用该表引擎。 当我们再次插入具有相同emp_id,name的数据时,观察结果 要保证 PRIMARY KEY expr 指定的主键是 ORDER BY expr 指定字段的前缀,比如 这种强制约束保障了即便在两者定义不同的情况下,主键仍然是排序键的前缀,不会出现索引与数据顺序混乱的问题。 用ORBER BY排序键作为聚合数据的条件Key。即如果排序key是相同的,则会合并成一条数据,并对指定的合并字段进行聚合。 以数据分区为单位来聚合数据。当分区合并时,同一数据分区内聚合Key相同的数据会被合并汇总,而不同分区之间的数据则不会被汇总。 如果没有指定聚合字段,则会按照非主键的数值类型字段进行聚合 如果两行数据除了排序字段相同,其他的非聚合字段不相同,那么在聚合发生时,会保留最初的那条数据,新插入的数据对应的那个字段值会被舍弃 该表引擎继承自MergeTree,可以使用 AggregatingMergeTree 表来做增量数据统计聚合。如果要按一组规则来合并减少行数,则使用 AggregatingMergeTree 是合适的。AggregatingMergeTree是通过预先定义的聚合函数计算数据并通过二进制的格式存入表内。 与SummingMergeTree的区别在于:SummingMergeTree对非主键列进行sum聚合,而AggregatingMergeTree则可以指定各种聚合函数。 对于AggregateFunction类型的列字段,在进行数据的写入和查询时与其他的表引擎有很大区别,在写入数据时,需要调用 <agg>-State 函数;而在查询数据时,则需要调用相应的 <agg>-Merge 函数。对于上面的建表语句而言,需要使用 sumState 函数进行数据插入 上面演示的用法非常的麻烦,其实更多的情况下,我们可以结合物化视图一起使用,将它作为物化视图的表引擎。而这里的物化视图是作为其他数据表上层的一种查询视图。 AggregatingMergeTree通常作为物化视图的表引擎,与普通MergeTree搭配使用。 CollapsingMergeTree就是一种通过以增代删的思路,支持行级数据修改和删除的表引擎。它通过定义一个sign标记位字段,记录数据行的状态。如果sign标记为1,则表示这是一行有效的数据;如果sign标记为-1,则表示这行数据需要被删除。当CollapsingMergeTree分区合并时,同一数据分区内,sign标记为1和-1的一组数据会被抵消删除。 每次需要新增数据时,写入一行sign标记为1的数据;需要删除数据时,则写入一行sign标记为-1的数据。 上面的建表语句使用CollapsingMergeTree(sign),其中字段sign是一个Int8类型的字段 CollapsingMergeTree同样是以ORDER BY排序键作为判断数据唯一性的依据。 分数数据折叠不是实时的,需要后台进行Compaction操作,用户也可以使用手动合并命令,但是效率会很低,一般不推荐在生产环境中使用。 当进行汇总数据操作时,可以通过改变查询方式,来过滤掉被删除的数据 只有相同分区内的数据才有可能被折叠。其实,当我们修改或删除数据时,这些被修改的数据通常是在一个分区内的,所以不会产生影响。 值得注意的是:CollapsingMergeTree对于写入数据的顺序有着严格要求,否则导致无法正常折叠。 如果数据的写入程序是单线程执行的,则能够较好地控制写入顺序;如果需要处理的数据量很大,数据的写入程序通常是多线程执行的,那么此时就不能保障数据的写入顺序了。在这种情况下,CollapsingMergeTree的工作机制就会出现问题。但是可以通过VersionedCollapsingMergeTree的表引擎得到解决。 上面提到CollapsingMergeTree表引擎对于数据写入乱序的情况下,不能够实现数据折叠的效果。VersionedCollapsingMergeTree表引擎的作用与CollapsingMergeTree完全相同,它们的不同之处在于,VersionedCollapsingMergeTree对数据的写入顺序没有要求,在同一个分区内,任意顺序的数据都能够完成折叠操作。 VersionedCollapsingMergeTree使用 version 列来实现乱序情况下的数据折叠。 可以看出:该引擎除了需要指定一个sign标识之外,还需要指定一个UInt8类型的version版本号。

环保问题*除左最BASIC既REDUCE, RECYCLE, REUSE, 仲有咩R?

除了这知识.knowledge.yahoo/question/?qid=7007020903344 提及的6R外: 第 一 个 「R」 - Reduce( 减 少 使 用 )。 减 少 甚 至 不 买 无 谓 的 东 西 , 本 来 无 一 物 , 就 不 用 思 想 如 何 处 理 。 第 二 个 「R」 - Reuse( 重 覆 使 用 )。 不 要 随 便 丢 弃 那 些 看 似 没 用 的 东 西 , 可 以 废 物 利 用 或 物 尽 其 用 。 第 三 个 「R」 ─ Recycle( 循 环 再 用 )。 到 了 物 件 真 的 破 损 不 堪 就 可 考 虑 将 它 循 环 再 用 。 第 四 个 「R」 - Replace( 替 代 使 用 )。 尽 量 用 环 保 物 品 , 例 如 以 手 巾 取 代 纸 巾 , 乘 搭 公 共 交 通 公 具 替 代 私 家 车 。 第 五 个 「R」 - Rethink( 再 思 想 ), 行 动 前 先 想 一 遍 , 我 的 行 动 会 为 地 球 带 来 破 坏 ? 如 是 , 就 应 停 止 。 第 六 个 「R」 - Redundant( 多 余 的 )。 环 保 需 要 身 体 力 行 , 空 想 而 缺 乏 行 动 , 一 切 都 是 「 多 余 的 」 ( Redundant) 。 还有: 第 七 个 「R」 - Refuse( 拒 用 )。拒绝使用一些会破坏环境、而且没有必要的西。 第 八 个 「R」 - Refine( 精 致 使 用 )。 第 九 个 「R」 - Recover( 回 收 )。 第 十 个 「R」 - Re-educate( 再 教 育 )。 第 十一 个 「R」 - Regeneration( 循 环 再 生 )。 第 十二 个 「R」 - Reject( 拒 绝 使 用 法 律 规 定 的 有 害 物 质 ) 暂时知道有甘多 希望帮到你 reproduce reprocess refe 环保4R (一)减少使用(REDUCE)    - 少用胶袋,自备购物袋。    - 少用发泡胶容器,减少污染。    - 少买包装的食物及用品,选购家庭装或补充装。    - 少用即弃物品,例如木筷子、保鲜纸等。 (二)循环再造(RECYCLE)    - 多购买由现时本港可循环再造的物料包装的用品。    - 多支持绿色消费,购买循环再造用品。    - 多将废物分类后放进分类回收桶。 (三)物尽其用(REUSE)    - 在弃置物件时,应先考虑物件可否再用。将物品转赠予其他有需要的人比埋在堆填区更有价值。 (四)替代使用(REPLACE)    - 用天然物料和用品,可减少对环境造成的破坏,例如用蛋壳代替化学肥料。    - 购买可分解的物料代替不可分解的物料。    - 用手帕代替纸巾。    - 用有盖容器代替保鲜纸储藏食物 参考: .knowledge.yahoo/question/?qid=7007040701644

zip/postal code / house nr这个HOUSE NR怎么填啊?

HOUSE NR门牌号码?

negative和refuse当动词否定的区别?

negative vt. 否定;拒绝[ 过去式negatived 过去分词negatived 现在分词negativing vt.1. 否定,取消;否认:He negatived it was true.他否认这件事是真的。to negative a suggestion否定一项建议2. 不同意,反对,否决:The motion was negatived by the House.上院否决了该项议案。3. 驳斥,不赞成:She did negative your conduct.她确实不赞成你的所作所为。4. 消除,抵制,抵消:to negative any harmful influences消除各种不良影响interj.[表示不同意、不赞成、否定、否认等]反对!不行!refuse1 [ri"fju:z; ri:-] vt.1. 拒绝;拒不接受:She refused his invitation to the tea party.他请她参加茶会,她拒绝了他的邀请。2. 拒做;拒给[常后接不定式]:He can"t refuse her anything.她要什么他都不能不给。 They refused to pay their taxes.他们拒不纳税。3. 不愿;不肯:The little boy refused to go to school.这个小男孩不肯去上学。I wouldn"t refuse help to an old friend.对一个老朋友我是不会不肯帮助的。4. 抵制;拒不服从;拒不同意:He refused me permission.对我的要求,他拒不允诺。We were going to set off immediately,but the truck refused to start.我们准备立即出发,但卡车发动不起来。5. (马)不肯跳过(障碍物):His horse refused the first fence.他的马不肯跳过第一道栅栏。6. [废语]垫(牌),不跟(牌)vi.拒绝(接受、同意等);不肯:The little girl looked so pitiful; I hadn"t the heart to refuse.这个小姑娘太可怜了,我简直不忍心拒绝。希望能采纳,谢谢

Ⅴ.The use of the geological compass

The geologic compass,along with the rock hammer and hand len S,is one of the traditional geological tool S.The compass is used to determine direction,measure topographical slopes and to determine strike and dip of beds,structures and other geological features.There are many kinds of compasses,but most have essentially the same design and usage.Chinese geologists generally use an octagonal brunton-style compass.Following is an introduction for the usage of the DQY-1 geological compass,produced by the Harbin optical instrument factory,(Fig.2-5).Fig.2-5 DQY-1 Geological Compass1.The structure of the oompas SFig.2-6 Chart for DQY-1 geological compass1—short arm;2—cover; 3—ellipticalmirrorhole; 4—hinge connection; 5—compass shell; 6—long arm; 7—mirror and sub-line ; 8—magnetic needle ; 9—level bubble; 10—dial; 11—inclinometer level bubbl ; 12—inolinometer dial ; 13—brake screw ; 14—dial screws correctionThe compass is composed of housing,hinge connection,mirrors,folding arms,magnetic needle,dial,inclinometer scale,inclinometer plate,needle damper and screw dial for correotion of the declination(Fig.2-6).The hinge connects the compass with its cover and the mirror with a graduation line is loaded in the cover.The magnetic needle points to the magnetic North and South Pole-the white end of the needle points north and the blaok end south.The south needle is wrapped in a copper wire because China is in the northern hemisphere.The dial is divided into 360 degrees with the 1 80-degree mark at the hinge.The short and long arms are hinged to the body of the compass.The tips of the arms are aligned with the dial on the face of the oompass.The arms,magnetic needle,and dial can be used to determine the direction of a feature.A bubble level is used to keep the compass level and the second bubble in the inclinometer,can be rotated from the back of the compass to measure dip angles.The needle damper clamps the compass needle when the compass is closed in order to reduce wear and tear.The dial screw on the side is used to set the looal magnetic declination.2.Calibration of the compa SsThe magnetic needle points to the magnetio North and South poles,which are noti n the same location as the geographic poles.Thus,the compass needle must be adjusted so that it aligns with the geographic poles.The difference between the two is called the magnetic declination and it varies from place to place on the globe and changes with time.It is crucial that the needle should be adjusted before the compass is used or all of the measured data will be incorreot.Fig.2-7 Setting the magnetic declination of the compass(a)magnetic declination with 5°to the west;(b)magnetic declination with 5°to the east;(c)an example of magnetic declination in the Beidaihe area,Hebei ProvinceThe angle and direction of the magnetic declination for specific areas are generally given on topographic maps of the region.The declination on a map is for the date at which the map was published,so the declination needs to be calculated for the current date.In most parts of China magnetic north is located to the west of the meridian,and thus one must make a western declination.The procedure for calibration of the magnetic declination is shown in Fig.2-7.If the magnetic declination is to the west,use the screw on the side to rotate the surface plate in a counter-clockwise direction to the proper position(Fig.2-7(a).If the magnetic declination is to the east,make a clockwise rotation(Fig.2-7(b).It is always advisable to check your setting after the adjustment by aligning the compass with some feature whose geographic coordinates are known,e.g.a road running N-S or E-W.If the compass is set properly,it will line up with this feature.3.Use of the compas S for fieldworkIn field work,the compass is used to measure the direction of various features,the dip angle of hill slopes and the strike,dip direction and dip angle of various structural elements.(1)Azimuth measurementTo determine one"s location on a topographic map iti s useful to measure the azimuth to some fixed point of reference,e.g.,a hill top,stream junction or other feature shown on the map(Fig.2-8).By measuring the azimuth of two or more fixed points,one can draw lines from those points and where the lines intersect is the point at which you are located.Fig.2-8 Azimuth measurementsBefore taking a measurement make sure that the needle can move freely.Place the compass at a convenient height(waist or chest level)and align the long arm with the feature to be measured by using the mirror.Make sure that the compass is level by centering the round level bubble.When the needle stops swinging,you can read directly the azimuth of the feature.An azimuth reading can be either north or south,so one needs to know the direction of the reference point in relation to your position.Thus,in Fig.2-8,point A lies to the south of the feature at point B and one must draw a line southward(at the correct angle)from point B to determine the location of point A.The correct angle can be read from the south end of the magnetic needle.When the feature to be measured is low,the l Ong arm should point t O the Observer and the mirr Or should be adjusted until one can see the feature and the compass face with the level bubble.Keep the c Ompass level until the needle st Ops swinging and then press the brake to h Old the needle in p Ositi On.HOlding the brake d Own,turn the c Ompass until you can read the dial and record the angle as before.(2)Measurement of hill slopesHill slopes form an angle between the inclined plane oft he slope and the h Oriz Ontal.The meth Od for measuring this angle is shown in(Fig.2-9).One person stands at the top of the slope and the other One at the b Ott Om makes the measurement.Turn the c Ompass On its side,align the l Ong arm and sh Ort arm with the head of the person at the t Op and r Otate the inclinometer until the bubble is level.Then read the angle.The slope can also be measured from top to bottom,even without a second person if necessary.Fig.2-9 M easurement of a hills lope(3)Measurements for planar features such as bedding orf oliationFor planar feature S,one must measure the strike,dip direction and dip angle.The strike is the direction of an imaginary line formed by the intersection of the plane with the horizontal and the dip direction is perpendicular to the strike(Fig.2-10).The dip is the downward angle between the plane and the horizontal,measured perpendicular to the strike(Fig.2-10).To measure the strike,open the compass and place the long edge against the plane and then rotate the compass until the level bubble is centered.Now read the angle of the compass needle from north.The angle measured by the north and south end of the needle i S the same but,by convention,strike is usually referred to the north direction(e.g.N30°E)or recorded as an azimuth(e.g.120°),which is the same.With practice you will be able to measure the strike without having to place the compass on the rock.This is important because some rocks are magnetic and thi S can cause an incorrect reading.To measure the dip direction,place the compass as shown in Fig.2-10 with the hinge along the line of strike,centering the level bubble and read the angle between the needle and north.Fig.2-10 Diagram showing how to measure the strike and dip of a planar featureTo measure the dip angle,align the edge of the compass with the dipping plane parallel to the dip direction(Fig.2-10),rotate the inclinometer until the bubble is centered and then read the angle.Actually,only the dip direction and dip angle need to be measured,because the strike can be calculated by adding or subtracting 90°from the dip direction.It is important to first measure the dip direction and then the dip angle,not vice versa.If the rock surface is uneven,one can place the field book on the surface and make the measurement on the book.Alternatively,one can estimate the slope and make the measurements without placing the compass on the rock.If the outcrop is incomplete,the dip angle and direction can be measured by the 3-point method.Find two points on the layer at the same level(this is the strike)and one point up or down on the surface perpendicular to the strike.Align the field book with these three points to make a plane and to make the measurements as described above.The section above describes the way to measure any plane and it can be used for rock layers,foliation,cleavage,schistosity,joints or faults.The measured data are usually recorded as follows.For a plane with a dip direction of 30°,and dip angle of 50°,the information would be recorded as 30°∠50°.This shows that the measurement refers to a planar feature.In North America,it would be recorded as Strike N60°W and Dip 50°NE.

1.孩子们计划明天乘出租车到博物馆。 The children plan to _______ _______ _______to the museum tomor

1 take a taxi2 ride a bike3leaving for4 the morning train5to walk to

purehouse是什么? 还有Proghouse 是啥意思!舞曲分类的!

purehouse就是纯house的意思动次打次 Proghouse其实就是Progressive House

He has lived in the house for twenty years.

Hehaslivedinthehousefortwentyyears.是对的意思是:他在这房子生活了20年。用现在完成时强调对现在的结果或影响一般不会说成Hehaslivedfortwentyyearsinthehouse。因为句子的结构一般是:主语+谓语+宾语+地点状语+时间状语。

Her curiosity aroused,she tried to.... 这个句子里面的“curiosity aroused”是什么用法什么意思啊?

是名词,意思是好奇心.无须用was

how to use our brain efficiently作文

It is a common knowledge that our brain is the most precious thing we got. We must use our brain efficiently, instead of wasting this treasure. There are differences between female brain and male brain. When we are considering about subjects we want to take or jobs we want to do, we need to think about these differences. Mostly, women are more sentimental than men are. Also, women enjoy better sense of beauty than men do. However, men have better ideas on space and direction. Men can solve math or science problems better than women can. One more thing is that we have to push ourselves to explore more. Being lazy is not a good thing for our brain to work well. To use our brains efficiently, we must try harder and break the red line over and over again.

jquery的mouseenter()和hover()有什么区别?

hover的话,离开也会触发事件。

mouseover 和 hover 方法的不同

这2个是有区别的。hover是指分别当鼠标指针进入和离开元素时被执行的事件相当于mouseenter+mouseleave。而mouseover鼠标进入某个元素或其子元素时触发。可参考mouseover和mouseenter的区别:http://www.w3school.com.cn/tiy/t.asp?f=jquery_event_mouseenter_mouseover而mousemove如你所说只要鼠标移动,哪怕只有1像素就会触发。因为用户在浏览网页的过程中,鼠标是会不停移动的,所以一旦绑定这个事件,网页就会不停的执行mousemove所绑定的响应函数,消耗系统资源。这里的系统资源是指客户端的。。

CSS中的onmouseover和hover有什么区别?

onmouseover是JS程序的触发事件,意思是鼠标位于上面时触发什么动作,可以应用很多对象。hover是指鼠标位于上面时超链接的变化,这个只应用于超链接。

We may use contact datail to send to companies

We may use contact datail to send to companies whose service may be of interest to you.我们可以使用详细的联系方式发送给您,那些售后服务您感兴趣的公司。whose引导定语从句whose service may be of interest to you

The bird searches for what it can use in building its nest, and in doing this it thinks

鸟儿找能用来搭窝的材料,在此过程中,它思考着。这其实是and 连接的并列句,由两个简单句组成this指searches for what it can use in building its nest这件事it指代 the bird后一句中in doing this 是状语,而状语在句中的位置可以灵活变动 it thinks 是主语和谓语

备份文件 C:UsersAdministratorSearches 时,备份遇到问题。错误:(系统找不到指定的文件。 (0x80070002

还原精灵或一键GHOST作个备份就可以了。以后还原就是你做备份时的样子了。在这里建议使用一键GHOST。并且是带F9或F11为热键的,NT的不怎么行,就像是一键GHOST一样,如果使用一键GHOST或NT的一键还原精灵,在你重装系统出现错误时,就只能用光驱了,而带热键的在还原失败后还可以再次进行还原。但比一键GHOST功能少很多,如果只是普通的备份的话新手建议还是用一键还原精灵。。。。

Have you ever been ill?When you are ill,you must be unhappy because your body becomes hot,and there

1.选D,根据第四段中Germs aren"t found only in water. They are found in air and dust.可以排除C选项。A,B选项明显不符合题意,只有选D,并且根据第二段It is germs(细菌). Germs are everywhere.可以确定正确答案。  2.选A,根据文中They are very small and you can"t find them with your eyes,but you can see them with a microscope.可以知道microscope是显微镜。确定选A。  3.选C,文中说到Germs are always found in dirty water.因此父母不让喝脏水。  4.选D,根据文章可以判断A,B,C均为正确答案,而D项不正确,即使手不被割破,也会有细菌的。  5.选A,总揽全文,可以确定答案为A, Germs may make us ill。

centos系统怎么pxe安装suse

需要你的suse服务器段分配一个ip地址给centos;然后centos通过tftp等下载一个启动软件包;安装运行启动软件包,自动配置,使其运行于内存中。这样当机器启动时,bios就会自动从网络在服务器下载文件启动suse了。

如何查询Suse linux内存真实利用率

进入系统后立即运行命令:free

在SUSE执行sudo命令的格式

首先在suse下的yast界面配置,找到sudo相关配置,将指定的用户加到了sudo配置的表格里,填写好host和runas,选择nopasswd,添加命令,保存后即可。

在suse10下,怎么修改环境变量

suse10,不明白是什么,不过环境变量右键我的电脑-属性-高级-环境变量就有把你那程序的路径放到Path里,用分号隔开就可以了

suse版linux 怎么配置浮动ip

ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2

suse linux如何更改用户属组

用root身份执行 usermod -G 新的组 欲改组的用户名 这个是附加组,一个用户可以属于多个组的。还有强制改变 组 usermod -g 新的组 用户名

SUSE 和 Redhat的企业版哪个服务支持好,系统稳定性如何

支持来说应该都差不多SUSE小版本更新更频繁,支持更新的频率比较快Redhat版本更新不是很频繁,一个版本可以用1-2年

suse linux怎么运行 SH

要想直接运行的话,选chmod +x 文件名。

suse下可以安装yum源吗

可以的,suse有些地方和redhat还是兼容的

linux的三个发行版Suse,Debian和Redhat有什么不一样的?哪一种的用户比较多?哪一种又是比较好的呢?

都是主流,都很优秀,都谁也不服谁

linux suse 怎么修改语言环境

在该用户的家目录(通常为/home/用户名/)下的.bash_profile中加一行 LANG=xxx(你要改的语言) 就可以 追问: 没有这个目录,我只需要用户执行下命令,读下文件就行,所以创建的时候也没单独给用户建这个目录。你说这个一般是肯定有用户目录的做法。 回答: 那你只要在那个用户执行命令到时候这命令前面加上 LANG=xxx; 执行后加上unset LANG就行 追问: 恩,这种我知道,就是命令前加env lang=XXX 也可以,不过这样加的话有些命令执行不了。比如我要执行date "+%b"再带grep wl等的话有问题。 回答: 呃。那不好意思我没搞明白您的需求。弱弱地问你们的系统都是中文的? 追问: 都不是中文的,不过看env的profile配置,userid是0就是root用户的话lang是英文的,other,其他全部的都是zh和utf-8一起的,就这样的配置;这样的话date出来是乱码。但是其他用户我又不想全部改,只想改其中一个用户的lang。suse的系统不太懂有点不明白怎么办了。 回答: 噢。那不好意思我不会解决,还是建议您给用户一个家目录,管理起来都方便一些,而且也不只是这一个环境变量的问题。我们习惯在/etc/skel下配置好,不知道你们的情况 追问: 可能你不是Linux suse这个操作系统。你说的方式一般是这样做的。这个有点不一样。我没找到相关的资料。

奇怪了,请问suse 11如何启动和关闭iptables

关闭SuSE Linux管理防火墙的服务1. 检查 SuSE防火墙是否设置为启动chkconfig --list | grep firewall2. 关闭防火墙服务

suse linux 怎么装软件

apt-get install 软件包名 这样就可以了, 删除直接用 apt-get remove 软件包名

怎样开启Suse ntp服务

命令:/etc/init.d/ntp start 开启之后可以用如下命令: /etc/init.d/ntp status

suse 显卡驱动安装问题

安装驱动首先要关闭使用的硬件驱动程序文件,文件还在使用中当然不好改写,你x还在运行是无法安装的,ctrl+alt+F1去控制台,用root登录,init 3切换到运行级别3再做一遍,装完了init 5切回来。还有,完全不必创建一个rpm来安装,直接运行那个脚本试试呢?那本身就是一个安装程序。补充回答:你用cp命令复制到linux分区来不就好了嘛,随便放哪儿,建议放/usr/src/这是个好习惯,然后cd进去,chmod 0700 <文件名>给它加个执行位,用./<文件名>运行这个脚本,看看提示什么呢?应该是能直接安装的,并不需要构建RPM包什么乱七八糟的,我的nvidia显卡驱动就这么装上去了,写得好的驱动自己就准备好一切依赖关系不需要你操心的。

SUSE如何查看启动向

你下个360安全卫士,里面有查看启动项,看服务这个系统我不知道,

suse试用60天以后,还能用吗?

可以用的,suse是开源免费的,只是要他们的服务就要收费,我也是用的suse系统,感觉不是很好用,gtk+ 不好装

suse 10中怎么安装和使用yum

用yum要先配置一下源,配置的时候注意http和https,有时候用https是不行的yum应该有search的功能,你manyum一下suse10下面为什不用zypper呢?suse自己开发的,suse10下的zypper功能还不是很多,到suse11就比较强大了,suse11下的zypper已经完全可以替代yast的包管理了

刚安装了SUSE11.1,请问一下怎样进入图形桌面?

还不如装Rad hat

ubuntu、fedora、suse和linux是什么关系啊?

linux是操作系统名称,ubuntu、fedora、suse是用同种操作系统

opensuse和suse的区别?哪个更好?漂亮?

openSUSE是社区版,SLED/SLES是企业版。用的是相同的主题,貌似SLED比openSUSE多几张漂亮的壁纸。SLED/SLES更成熟、稳定,订阅费用也较高(也可以选择不订阅技术支持),官方源里软件较openSUSE少;openSUSE软件版本更新,可扩展性强(可用于桌面或服务器),免费更新(也可以购买官方技术支持)。SLED更适用于工作、生产环境,娱乐功能较差;openSUSE可用于个人娱乐和其他较专业用途。

这几个SUSE都有什么区别呀

i386和x86-64是与你的CPU类型有关,前者是32位,后者是64位。带LIVE字样的是从CD启动直接进入桌面,不用安装就可以使用 。GNOME和KDE是两个不同的界面而已。带Mini的自然是迷你版了。

suse和opensuse这两个系统有什么区别?哪个更好?

Novell收购suse后,最先出的linux叫Novell linux desktop, 是一个基于Suse的发行版,而原来的suse也继续叫suse直到suse 10.1(希望没记错啦), suse就被Novell改名为openSUSE, 而suse就被Novell用在自己的发行彼上,并分为两个版本SUSE LINUX DesktopSUSE LINUX Enterprise至于那个好就看自己需要了

如何查看suse linux tcp参数

sysctl -a

SUSE下修改系统启动顺序

进入Linux中,找到menu.lst文件(应该在/boot目录里) 然后用文本编辑器打开 其中: 表示默认启动的第0号的操作系统,在GRUB中,title定义了启动的操作系统,从第1个开始,GRUB中是0,而第2个是1,依次类推... 你试着把 default=0 改成 default=某个数字。。数数title就知道该设置成几了。。 我也不知道该怎么说才清楚。。希望你能看懂

suse linux需要激活吗

Linux代码都开源了,还要激活码?

suse系统怎么设置无线网卡?

  无线网络设置  1、在Windows XP系统桌面上,依次单击“开始”/“设置”/“控制面板”命令,打开控制面板窗口,在其中双击网络图标,打开“网络连接”界面;  2、在这个界面中,用鼠标右键单击“无线网络连接”图标,从随后打开的快捷菜单中,执行“属性”命令,这样系统就会自动显示“无线网络连接属性”设置对话框;  3、在这里,大家可以用鼠标选中“无线网络配置”标签,并在随后弹出的标签页面中,用鼠标选中“用Windows来配置我的无线网络配置”复选项,这样就能启用自动无线网络配置功能;  4、接着用鼠标单击这里的“高级”按钮,打开一个“高级”设置对话框,并在这个对话框中选中“仅计算机到计算机(特定)”选项,从而实现计算机与计算机之间的相互连接;   5、要是大家希望能直接连接到计算机中,又希望保留连接到接入点的话,就可以用鼠标选择“任何可用的网络(首选访问点)”选项;  6、在首选访问点无线网络时,要是发现有可用网络的话,系统一般会首先尝试连接到访问点无线网络;要是当前系统中的访问点网络不能用的话,那么系统就会自动尝试连接到对等无线网络;

如何进行suse linux系统升级

1.以root用户登陆GBAM服务器。2.输入命令rm /etc/adjtime,删除adjtime.3.输入命令date月日时分年,修改和设置系统时间。例如,如果想把GBAM时间设置成2006年11月26日12点01分,输入命令date 112612012006即可。4.输入命令clock–w,同步硬件时钟和系统时间。5.完成以上步骤后,使用reboot命令重启GBAM服务器,使用date命令看一下,时间是否已经正确修改。

suse 10中如何设置永久路由~!

yast敲回车,找到network那一项,回车,然后会有设置dns的选项,直接写上完事。
 首页 上一页  36 37 38 39 40 41 42 43 44 45 46  下一页  尾页