Clickhouse解决连接/查询超时(Read timeout)
jdbc jdbc:clickhouse://{host}:{port}[/{database}]?socket_timeout=600000 datagrip等远程连接工具
clickhouse创建分布式表和本地表并远程同步mysql数据
此处以mergetree引擎举例,如果是用于高可用开发,还是需要换成replicatemergetree系列引擎1234567891011121314151617181920212223242526272829303132333435363738394041424344454647-- tablename和clustername不用提前建立好,会自动建立-- 分布式表和本地表都需要删除drop table if exists <database>.<tablename_local> on cluster <clustername>;drop table if exists <database>.<tablename_local> on cluster <clustername>;-- 先创建本地表(因为同步远程表没办法以集群模式同步,所以可以先同步表结构,不插入数据,然后再使用insert同步数据到各个节点)CREATE TABLE <database>.<tablename_local&g...
clickhouse工作中常用命令(长期)
全量从mysql导入数据到clickhouse(并建表)123clickhouse-client -m -u default --password 123456 --query="CREATE TABLE clickhouse_database_name.clickhouse_table_name ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('ip:port', 'database_name', 'table_name','name', 'password');"; clickhouse数据导出到csv文件1clickhouse-client -h 127.0.0.1 --database="db" --query="select * from db.test_table FORMAT CSV" > test.csv csv文件导入到clickho...
clickhouse安装及简单使用
官方文档 安装(centos7) 检测环境许可 1$ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" 添加官方存储库 123sudo yum install yum-utilssudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/stable/x86_64 如果您想使用最新的版本,请用testing替代stable(我们只推荐您用于测试环境)。prestable有时也可用。 安装 1sudo yum install clickhouse-server clickhouse-client 启动 配置文件/etc/clickhouse-server/config.xml 1注释掉...
时间字段选择
MySQL 5.6 版本开始 DATETIME 和 TIMESTAMP 精度支持到毫秒 DATETIME 占用 8 个字节,TIMESTAMP 占用 4 个字节,DATETIME(6) 依然占用 8 个字节,TIMESTAMP(6) 占用 7 个字节 TIMESTAMP 日期存储的上限为 2038-01-19 03:14:07,业务用 TIMESTAMP 存在风险 使用 TIMESTAMP 必须显式地设置时区,不要使用默认系统时区,否则存在性能问题,推荐在配置文件中设置参数 time_zone = '+08:00' 推荐日期类型使用 DATETIME,而不是 TIMESTAMP 和 INT 类型 表结构设计时,每个核心业务表,推荐设计一个 last_modify_date 的字段,用以记录每条记录的最后修改时间
记一次数据库结构优化经验-水平分表
最近一个项目模块的数据库要进行结构调整优化,所以这里记录一下 首先我们是做汽车后市场业务的产品, 所有的业务和车型的sku数据息息相关,所以关于车型服务模块的压力在同比当中是比较大的。而目前我们的问题是qps并不高,但是数据库的cpu却经常7/8十 为什么会这样? 主要是该模型库的数据量庞大,数据表结构厚,导致在qps并不高的时候cpu消耗也比较高.所以大qps,小cpu消耗是我们解决问题的方向 前景有了,接下来就是解决问题的方案 数据库调整,怎么调整?从表思考两个方向 长度-数据量 厚度-表结构 上游调用需要频率 当然具体探讨流程就不叙述了(这里涉及到业务的东西很多),最终领导敲板车型库其中两个数据量庞大,调用频率高的表按分片键水平分表 这里记一下整体调整的过程 接口服务调整 121. 所有有关这俩表的crud都必须带上分片键2. 既要保证兼容,又要确保可拓展(其实很简单,就是分片键传参粒度高些) 分表及数据迁移(存储过程) 12345678910111213141516171819202122232425262728293031323334353...
Mysql-explain之UsingTemporary和UsingFilesort解决案例
首先查看explain执行计划,让主要查询语句使用索引,索引type级别最好达到ref | ref_eq级别 其次将extra一栏的Using temporary(临时表)、Using filesort(文件排序)拖出去砍了 第一条语句 123explain select * from tb_wm_shop where is_delete != 1 and is_authentication = 1 ORDER BY create_time DESC 大家应该知道使用order by的 字段要使用索引,这条语句中create_time已经创建了索引,但是计划中并没有使用该索引,导致出现了Using filesort文件排序,使其查询变慢 解决方法如下: 从where条件开始,依照顺序创建一个组合索引,就可以砍掉Using filesort这个令人讨厌的头颅了 注意:必须依照顺序,在创建组合索引时,where条件的字段在orderBy的字段之前,如果orderBy是多字段,则必须依照顺序创建 详情可参考链接:https://blog.csdn.net/dingxingmei...
记录因group_concat函数长度限制引起的问题
首先项目里有一条类似这样的sql 123456789101112131415161718select tr.xxx tr.cm_ids, group_concat(te.xxx) a, group_concat(te.xxx) b, group_concat(te.xxx) c, group_concat(te.xxx) d,from (select tr.1, tr.2, tr.3, group_concat(cm_id) cm_ids from xxx tr where tr.xxx = '123' group by tr.1,tr.2,tr.3) tr left join xxx tc on tr.xxx = tc.xxx left join xxx te on tr.xxx = te.xxxgroup by tr.1,tr.2...
Mysql数据备份与恢复
备份 - 从数据库导出数据:格式:mysqldump -h链接ip -P(大写)端口 -u用户名 -p密码数据库名 > d:XX.sql(路径) 示例:mysqldump -h132.72.192.432 -P3307 -uroot -p8888 htgl > bak.sql 备份导出示例:1、导出数据和表结构——将特定数据库特定表中的数据和表格结构和数据全部返回 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 database_di up_subjects > 0101_0630_up_subjects.sql 2、导出表结构却不导出表数据——只返回特定数据库特定表格的表格结构,不返回数据,添加“-d”命令参数 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 -d database_di up_subjects > 0101_0630_up_subjects.sql ...
MYSQL-记录函数和sql(长期)
摘自小骨格子屋的 mysql中的instr()函数的用法 想要在字符串中查找某字符串可以使用instr()函数 instr()返回子字符串在字符串中首次出现的位置;如果没有找到,则返回0 用法:123str:从哪个字符串中搜索substr:要搜索的子字符串instr()函数不区分大小写 mysql instr()函数示例:1如图,在abcd字符串中查找是否含有字符串b,返回的字符串位置是2. 说明instr()函数返回的位置是从1开始的,如果找不到则返回0 查找字符串中包含“民”的记录 instr()函数与like运算符 在没有索引的情况下,instr()函数与like运算符的速度是一样的;在具有前缀搜索的LIKE运算符下,使用like运算符速度会更快一些 SUBSTRING(s,n,len) MySQL 中获取子串函数 SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。 也可能对 n 使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,...
