Elasticsearch与mysql使用注意点总结

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 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%';

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
12月前
|
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
|
11月前
|
关系型数据库 MySQL API
MySQL 历史数据迁移到 Elasticsearch
MySQL 历史数据迁移到 Elasticsearch
380 4
|
11月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
524 0
|
Kubernetes 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在Kubernetes(k8s)中同步MySQL变更到Elasticsearch该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 关系型数据库 MySQL
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
254 0
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之源MySQL表新增字段后,要同步这个改变到Elasticsearch的步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
556 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
201 62

推荐镜像

更多