Elasticsearch与mysql使用注意点总结

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Elasticsearch与mysql使用注意点总结

ES
1、try-except: try覆盖的内容
2、Log.error,常用日志级别;
3、菜单权限;
4、输出结果分页;Paginator
5、不乱改通用接口,专用接口放在app内部;
6、功能常量不同模块另起文件。
7、Es使用注意:
(1)Field Collapsing(字段折叠)不能与scroll、rescore以及search after 结合使用。
(2)使用collapse 的字段如果是 string类型,则es 中对应 keyword。(The field used for collapsing must be a single valued keyword or numeric field with doc_values activated)
(3)keyword问题
text类型:会进行分词;分词后建立索引;支持模糊查询;支持准确查询;不支持聚合查询。
keyword类型:不会分词;直接建立索引;支持模糊查询;支持准确查询;支持聚合查询。
ES5.0及以后的版本取消了string类型,将原先的string类型拆分为text和keyword两种类型。它们的区别在于text会对字段进行分词处理而keyword则不会进行分词。
也就是说如果字段是text类型,存入的数据会先进行分词,然后将分完词的词组存入索引,而keyword则不会进行分词,直接存储。
创建index的时候可能给某个字段指定了类型text
(4)match_phrase匹配失效的话,可以考虑使用正则表达式regexp,用”.*”等匹配

8、列表嵌套字典去重
all_data = [dict(d) for d in (set([tuple(d.items()) for d in all_data]))]
az_list = [dict(d) for d in (set([tuple(d.items()) for d in az_list]))]

Mysql
1、mysql超时连接参数过大,连接池超时参数小,导致无效连接占满连接池
2、Mysql不可用-》存储集群pool满
3、数据库实例底层状态正常,但底层连接数据库的代理实例(proxy)状态异常,导致数据库控制台状态异常,无法访问
4、Mysql:Mysql数据库系统表之详细了解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表_innodb_trx trx_state lock_wait-CSDN博客

  • 当前运行的所有事务
    SELECT * FROM information_schema.INNODB_TRX;

  • 当前出现的锁
    SELECT * FROM information_schema.INNODB_LOCKs;

  • 锁等待的对应关系
    SELECT * FROM information_schema.INNODB_LOCK_waits;

  • PROCESSLIST表记录了每个MySql线程的用户,地址以及操作的db等其他信息。
    SELECT * FROM information_schema.PROCESSLIST;
    或者SHOW PROCESSLIST

出现锁超时问题Lock wait timeout exceeded,
执行SELECT * FROM information_schema.INNODB_TRX;
查看trx_rows_locked 这一列如果是大于0 或 trx_state:lock wait ,说明是堵塞住, 然后查对应的trx_mysql_thread_id 列找到对应线程ID,
然后执行SQL , kill 线程ID 即可

5、锁等待与死锁
锁等待 就是session (事物会话,开启一个事物代表一个会话)A 对某行数据获取独占锁(在这边一般就是写锁),然后session B 对相同的行进行获取独占锁就发生了锁等待;A释放B才能继续进行,超出innodb_lock_wait_timeout时间会报异常:
Lock wait timeout exceeded; try restarting transaction
死锁:两个以上的会话在抢占资源过程中,产生相互等待的情况,A先进入锁等待,当B也进入锁等待时会直接报死锁异常:
Deadlock found when trying to get lock; try restarting transaction
使用 show engine innodb status 查看死锁
查找到死锁线程,杀死MYSQL死锁的线程(kill命令);
如果事物未提交,直接回滚事物;
锁类型:共享锁(S);排他锁(X);意向共享(IS);意向排他(IX)
gap lock(GK)间隙锁,锁定一个范围,不包括当前记录本身;
RECORD LOCKS 代表记录锁;
查看表锁 : show status like 'table%';

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
存储 自然语言处理 关系型数据库
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
38 0
|
1月前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
21 0
|
1月前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
68 2
|
3天前
|
NoSQL 关系型数据库 MySQL
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
|
4月前
|
关系型数据库 MySQL Java
Elasticsearch 类比 mysql 实现 in and like or(Spring-Data-Elasticsearch)
Elasticsearch 类比 mysql 实现 in and like or(Spring-Data-Elasticsearch)
47 0
|
29天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
79 0
|
1月前
|
存储 机器学习/深度学习 关系型数据库
为什么Elasticsearch/Lucene检索可以比MySQL快?
为什么Elasticsearch/Lucene检索可以比MySQL快?
27 2
|
3月前
|
canal 缓存 SpringCloudAlibaba
Springcloud Alibaba 使用Canal将MySql数据实时同步到Elasticsearch
本篇文章在Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性-CSDN博客 基础上使用canal将mysql数据实时同步到Elasticsearch。
|
3月前
|
自然语言处理 搜索推荐 关系型数据库
Elasticsearch实现Mysql的Like效果
在Mysql数据库中,模糊搜索通常使用LIKE关键字。然而,随着数据量的不断增加,Mysql在处理模糊搜索时可能面临性能瓶颈。因此,引入Elasticsearch作为搜索引擎,以提高搜索性能和用户体验成为一种合理的选择。
Elasticsearch实现Mysql的Like效果
|
4天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用

热门文章

最新文章

推荐镜像

更多