Elasticsearch与mysql使用注意点总结

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
简介: 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%';

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL API
MySQL 历史数据迁移到 Elasticsearch
MySQL 历史数据迁移到 Elasticsearch
71 4
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
83 0
|
4月前
|
存储 关系型数据库 MySQL
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
118 0
|
6月前
|
Kubernetes 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在Kubernetes(k8s)中同步MySQL变更到Elasticsearch该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之源MySQL表新增字段后,要同步这个改变到Elasticsearch的步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
77 1

推荐镜像

更多