• 关于

    mysql_sql语句优化

    的搜索结果

问题

DRDS 错误代码如何解决?

本文档列出了 DRDS 返回的常见错误码及解决方法。 TDDL-4006 ERR_TABLE_NOT_EXIST TDDL-4007 ERR_CANNOT_FETCH_TABLE_META TDDL-4100 ERR_ATOM_NOT...
猫饭先生 2019-12-01 21:21:21 7993 浏览量 回答数 0

问题

mysql 中根据文章中的多个关键字来匹配其他文章的sql语句如何优化?

我有三个表是这样的,:文章表 article:关键字表 tag:关键字与文章的关联表 article_tag:要求:给定一个文章的id(article_id) 通过关键字获取其他的文章并根据关联度排序!我些的sql是这样的:select a...
落地花开啦 2019-12-01 19:54:24 1499 浏览量 回答数 1

问题

关于 MySQL 的索引合并的问题

osc_answers 表的索引如下:现在执行一个非常简单的查询语句: SELECT COUNT(id) FROM osc_answers WHERE question = 78473 AND parent = 0 这个 SQL 语句居然要...
落地花开啦 2019-12-01 19:51:57 1042 浏览量 回答数 1

回答

运行 MySQL 时,查询速度比较慢的语句对数据库的影响非常大,这些慢语句大多是写的不够合理或者大数据环境下多表并发查询造成的。MySQL 自带慢查询功能,能记录查询时间超过参数 long_query_time 的值的语句,用于定位执行慢的 SQL 语句。您可以优化慢查询语句从而优化 MySQL。 操作步骤 远程连接 并登录到 Linux 实例。执行命令 ls 查找 MySQL 配置文件,通常为 my.ini。执行命令 find $PWD -type f | grep "您查到的 MySQL 配置文件" 查找文件路径。执行命令 cd 您查找到的文件路径。进入 MySQL 执行命令 show variables like "%long%"; 查看慢查询的默认时间。执行命令 vi 您查到的 MySQL 配置文件,按 i 进入编辑模式,在 [mysqld] 小节处粘贴并复制以下内容,然后按 Esc 退出编辑模式,输入 :wq 保存退出。 log-slow-queries = /var/lib/mysql/mysql-slow.log #表示慢查询的日志存储目录。此目录文件一定要有写权限。 long_query_time = 2 #MySQL 将记录下所有执行时间超过 2 条的 SQL 语句。 进入 MySQL 执行命令 set global slow_query_log='ON'; 启用慢查询。进入 MySQL 执行命令 show variables like "%slow%"; 查看是否已开启慢查询,如果 log_slow_queries 状态为 ON,则表示已经开启慢查询。执行命令 service mysql restart 重新启动 MySQL 服务。
KB小秘书 2019-12-02 01:28:27 0 浏览量 回答数 0

问题

云服务器 ECS Linux 系统下 MySQL 如何开启慢查询

问题现象 如何开启 ECS Linux 主机中的 MySQL 慢查询。 问题原因 慢查询能记录下所有执行超过 long_query_time 时间的 SQL 语句, 可用于定位执行慢的 SQL 语句, 以便对相应 SQL 进...
boxti 2019-12-01 21:56:18 1192 浏览量 回答数 0

问题

mysql中获取最大记录组的优化

sql语句如下select did,t.direction,t.latitude,t.longitude,t.speed from t_car_locus t where t.id = (select max(t1.id) from t_c...
a123456678 2019-12-01 20:14:00 985 浏览量 回答数 1

问题

MySQL服务器消失了-恰好60秒?mysql

我最近发现,早先运行良好的SQL查询现在在60秒后超时并引发错误。该查询速度很慢,但是作为日常工作的一部分运行,因此它本身不是问题(因此请不要建议我对其进行优化)。 通...
保持可爱mmm 2020-05-17 09:42:36 1 浏览量 回答数 1

回答

tuser_recharge.user_id 看上去必是 user.id 的子集,你在tuser_recharge(1.5m)上做DISTINCT,再怎么JOIN也没什么用,况且两个语句并不从user表关联取值,所以JOIN是多余的。但真正的问题还是在tuser_recharge的数据量,1.5m数据作DISTINCT,哪怕user_id有索引也不影响DISTINC的执行,mysql会遍历整个索引,1.5m记录,假设索引里单记录执行花费0.00001秒,光遍历索引就需要大概0.000001x1500000=1.5秒,你画出的第一条语句的执行结果就在这个数量级上。这你可以直接跑SELECT DISTINCT user_id FROM tuser_recharge来验证,速度会在一个数量级上。第二条语句要慢很多,是因为除了遍历整个1.5m的索引,还需要产生临时表做SORT(因为ORDER BY),慢是可想而知的。优化的思路,第一是看你是否有用WHERE的可能,即避免让DISTINCT遍历整个索引,而用WHER先缩小范围。SELECT DISTINCT user_idFROM tuser_rechargeWHERE col = xxx如果业务不允许,那么最好的办法不是优化DINSTINCT,而是优化你的架构。通常操作思路是把前端代码和慢SQL语句解耦,做一个MYSQL SLAVE,用一个后台程序定时执行慢语句,把结果存入某个地方,前端语句直接读取这个结果,不经过mysql。这样的好处是前端不会再有伸缩性问题,坏处是牺牲了一定的实时性。如果你控制后台语句每一分钟执行一次,对一般业务也不至于产生什么问题。通常用户前端有一分钟或者几分钟的延迟并不是什么大问题。这样做你在架构上的收益是最大的,因为一个慢语句的成本不只是这个慢语句本身,还会BLOCK其他语句的执行,这是在线系统数据库最应该避免的。
蛮大人123 2019-12-02 01:46:33 0 浏览量 回答数 0

问题

SQL 优化基本有什么?

DRDS 是一个高效、稳定的分布式关系数据库服务,处理的是分布式关系运算。DRDS 对 SQL 的优化方法与单机关系数据库(例如 MySQL)有所不同,侧重考虑分布式环境中的网络 IO...
猫饭先生 2019-12-01 21:20:54 982 浏览量 回答数 0

回答

Remysql多表关联查询分页如何优化? 这里涉及到两部分的优化,多表关联和Limit分页。 SQL优化依赖于表中的数据分布,explain得到的执行计划中的rows可以大致反映出问题所在。由于现在只能看到您提供的SQL,没有具体的数据信息,我就说一下,拿到这条SQL后,我的优化思路: 多表关联的优化原则是小结果集驱动大结果集。这个阶段的优化非常重要,一般按照下面的步骤进行分析: 1. 确定驱动表,通过explain查看执行计划,可以看到优化器选择的驱动表。explain结果中,第一行出现的表就优化器选择的驱动表。 SELECT     c0.c_custnum AS cCustnum,     c0.c_username AS cUsername,         c10.cust_rank AS custRank,         jifen30.rank_name AS rankName,         c10.c_accdate AS cAccdate,         c10.c_custname AS cCustname       FROM     capf00 AS c0       LEFT JOIN capf10 AS c10 ON c0.c_custnum = c10.c_custnum       LEFT JOIN capf30 AS c30 ON (c10.c_custnum = c30.c_custnum AND c30.is_del = 'N')       LEFT JOIN capf120 ON capf120.cust_no = c10.c_custnum       LEFT JOIN jifen30 ON c10.cust_rank = jifen30.cust_rank      LEFT JOIN capf101 ON capf101.cust_no = c0.c_custnum      WHERE    capf120.create_time IS NULL    AND c0.is_del = 'N'    AND c10.is_del = 'N' 一般,习惯性认为left join驱动顺序是固定的,left join左边的表为驱动表,右边为被驱动表。 其实这也不是绝对的,当left join跟inner join等价的时候,MySQL优化器就会自己选择驱动表。 MySQL对表连接至今只支持nested loop join,通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果集。优化的目标是尽可能减少关联查询中nested loop的循环次数,也就是说尽量缩小驱动表的结果集。 2. 理清各表之间的关联关系,注意被驱动表的关联字段上需要建立索引 假设在第1步中,最后选取的驱动表是c0, 那么根据表关联关系,可以理出驱动顺序为 c0 -> c10 ->c30 ;  c10->capf120;  c10 ->jfen30 ;c0 ->capf101; 那么在被驱动表的关联字段上,是需要建立索引的,这里包括: c10.c_custnum c30.c_custnum capf120.cust_no jifen30.cust_rank capf101.cust_no 3. 综合考虑join字段和where字段,那么: c0建立索引 (is_del) c10建立组合索引 (c_custnum,is_del) c30建立组合索引 (c_custnum,is_del) capf120建立组合索引 (cust_no,create_time) jifen30建立索引 (cust_rank) capf101建立索引 (cust_no) limit 分页的优化: 可以利用到覆盖索引,使得在查询时,直接从二级索引中获取结果,避免返回数据行查找; 4. 所以结合到 select 字段,进一步优化索引: SELECT     c0.c_custnum AS cCustnum,     c0.c_username AS cUsername,         c10.cust_rank AS custRank,         jifen30.rank_name AS rankName,         c10.c_accdate AS cAccdate,         c10.c_custname AS cCustname 结合上面的几个步骤,最后给出的索引建议是:(这里依赖了前文中的一个假设条件,具体情况还是要依赖实际数据) c0 建立组合索引(is_del,c_custnum,c_username) c10 建立组合索引(c_custnum,is_del,cust_rank,c_accdate,c_custname) c30 建立组合索引 (c_custnum,is_del) capf120 建立组合索引(cust_no,create_time) jifen30 建立组合索引(cust_rank,rank_name) capf101 建立索引(cust_no) ------------------------- 回3楼hansen116的帖子 业务逻辑,是通过SQL来实现的。驱动表是MySQL优化器去选择的。随着建立的索引不同,数据分布的不同,对于同样的SQL语句,MySQL优化器可能选择不同的驱动表。 ------------------------- 回5楼hansen116的帖子 对的,只需要添加索引就行了。 另外,看到您的SQL语句其实只查询了3个表(c0,c10,jifen30)中的字段,但是查询了6个表中的关联。 您可以确认下,是否其他的几个表关联也都是业务上必要的。 如果不需要,可以减少表关联,可以提高查询效率的。
俞月 2019-12-02 02:09:37 0 浏览量 回答数 0

问题

最佳实践 -MySQL-MySQL实例参数调优参考

对于云数据库MySQL版的实例,您可以通过控制台上修改一些参数。对于某些重要参数而言,不恰当的参数值会导致实例性能问题或应用报错,所以本文将介绍一些重要参数的优化建议以减少您在设置参数时的疑虑。 ...
李沃晟 2019-12-01 21:40:06 611 浏览量 回答数 0

问题

MySQL数据库的优化

概述:在linux vps主机上配置mysql数据库,由于默认使用yum安装的数据库启动了InnoDB引擎,同时其/etc/my.cnf配置都我们的vps主机不是很适合,本文详细讲解如...
chuanshuolian 2019-12-01 20:18:08 10267 浏览量 回答数 2

回答

MySQL 5.6 主要在查询性能的优化、InnoDB改进以支持高吞吐量的事务、NoSQL风格的API、分区功能的改进、数据复制的改进,增加 PERFORMANCE_SCHEMA 库以获得数据库性能信息等。1. 查询性能优化:下推索引条件:具体实现方法不详,意思是将优化 WHERE 语句改进索引条件的处理性能Multi-Range Read:通过随机数据访问来提升 SSD 上的数据读取速度优化文件排序:对一些组合了ORDER BY non_indexed_column 和 LIMIT x 的SQL语句,该特性将大大加速此类语句的执行速度。2. InnoDB 的改进MySQL 5.6 完全集成 InnoDB 作为默认的存储引擎。同时 5.6 版本在使用 InnoDB 上的很多细节做了改进,详情请看这里。3. 提供 NoSQL 风格的 API此举完全是寨 Percona Server 的做法?该功能主要适用于将 MySQL 来作为 NoSQL 使用,而 MySQL 使用的是 memcached 兼容的 API。通过该接口程序访问数据可直达 InnoDB 存储引擎,而无需通过 MySQL 对 SQL 的转换过程,大大提升了数据访问的性能。4. 分区的改进显式分区数据查询,例如:`SELECT * FROM employees PARTITION (p0, p2);DELETE FROM employees PARTITION (p0, p1);UPDATE employees PARTITION (p0) SET store_id = 2 WHERE fname = 'Jill';SELECT e.id, s.city FROM employees AS e JOIN stores PARTITION (p1) AS s ...;`分区数据的导入导出,此功能用于快速的将某个表迁移到分区上:ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;5. 复制功能的改进优化基于行的数据复制、多线程的数据复制、提升数据复制的一致性和可用性。6. 大大增强 PERFORMANCE_SCHEMA 数据库降低了数据库开销、表IO的信息汇集和监控、表锁信息汇集和监控、会话和用户级别的监控、全局性能信息汇总
落地花开啦 2019-12-02 01:42:25 0 浏览量 回答数 0

问题

RDS MySQL使用提示:the table '/home/mysql/xxxx/xxxx/#tab_name' is full 的原因和处理

问题描述: RDS MySQL the table '/home/mysql/xxxx/xxxx/#tab_name' is full 的原因和处理 用户在使用RDS的时候收到类似这样的提醒“the tab...
云栖徒骇 2019-12-01 21:23:04 7456 浏览量 回答数 0

回答

本文介绍AliSQL的内核版本更新说明。 MySQL 8.0 20200229 新特性 Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。 在半同步模式下添加网络往返时间,并记录到性能数据。 性能优化 允许在只读实例上进行语句级并发控制(CCL)操作。 备实例支持Outline。 Proxy短连接优化。 优化不同CPU架构下的pause指令执行时间。 添加内存表查看线程池运行情况。 Bug修复 在低于4.9的Linux Kenerls中禁用ppoll,使用poll代替。 修复wrap_sm4_encrypt函数调用错误问题。 修复在滚动审核日志时持有全局变量锁的问题。 修复恢复不一致性检查的问题。 修复io_statistics表出现错误time值的问题。 修复无效压缩算法导致崩溃的问题。 修复用户列与5.6不兼容的问题。 20200110 新特性 Inventory Hint:新增了三个hint, 支持SELECT、UPDATE、INSERT、DELETE 语句,快速提交/回滚事务,提高业务吞吐能力。 性能优化 启动实例时,先初始化Concurrency Control队列结构,再初始化Concurrency Control规则。 异步清除文件时继续取消小文件的链接。 优化Thread Pool性能。 默认情况下禁用恢复不一致性检查。 更改设置变量所需的权限: 设置以下变量所需的权限已更改为普通用户权限: auto_increment_increment auto_increment_offset bulk_insert_buffer_size binlog_rows_query_log_events 设置以下变量所需的权限已更改为超级用户或系统变量管理用户权限: binlog_format binlog_row_image binlog_direct sql_log_off sql_log_bin 20191225 新特性 Recycle Bin:临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据。 性能优化 提高短连接处理性能。 使用专用线程为maintain user服务,避免HA失败。 通过Redo刷新Binlog时出现错误会显式释放文件同步锁。 删除不必要的TCP错误日志。 默认情况下启用线程池。 Bug修复 修复慢日志刷新的问题。 修复锁定范围不正确的问题。 修复TDE的Select函数导致的核心转储问题。 20191115 新特性 Statement Queue:针对语句的排队机制,将语句进行分桶排队,尽量把可能具有相同冲突的语句放在一个桶内排队,减少冲突的开销。 20191101 新特性 为TDE添加SM4加密算法。 保护备实例信息:拥有SUPER或REPLICATION_SLAVE_ADMIN权限的用户才能插入/删除/修改表slave_master_info、slave_relay_log_info、slave_worker_info。 提高自动递增键的优先级:如果表中没有主键或非空唯一键,具有自动增量的非空键将是第一候选项。 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。 Redo Log刷新到磁盘之前先将Binlog文件刷新到磁盘。 实例被锁定时也会影响临时表。 添加新的基于LSM树的事务存储引擎X-Engine。 性能优化 Thread Pool:互斥优化。 Performance Insight:性能点支持线程池。 参数调整: primary_fast_lookup:会话参数,默认值为true。 thread_pool_enabled:全局参数,默认值为true。 20191015 新特性 TDE:支持透明数据加密TDE(Transparent Data Encryption)功能,可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。 Returning:Returning功能支持DML语句返回Resultset,同时提供了工具包(DBMS_TRANS)便于您快捷使用。 强制将引擎从MyISAM/MEMORY转换为InnoDB:如果全局变量force_memory/mysiam_to_innodb为ON,则创建/修改表时会将表引擎从MyISAM/MEMORY转换为InnoDB。 禁止非高权限账号切换主备实例。 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮循方式,保留最近的秒级性能数据。 Innodb mutex timeout cofigurable:可配置全局变量innodb_fatal_semaphore_wait_threshold,默认值:600。 忽略索引提示错误:可配置全局变量ignore_index_hint_error,默认值:false。 可关闭SSL加密功能。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 Bug修复 支持本地AIO的Linux系统内,在触发线性预读之前会合并AIO请求。 优化表/索引统计信息。 如果指定了主键,则直接访问主索引。 20190915 Bug修复 修复Cmd_set_current_connection内存泄露问题。 20190816 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 Statement Concurrency Control:通过控制并发数应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化,保证MySQL实例持续稳定运行。 Statement Outline:利用Optimizer Hint和Index Hint让MySQL稳定执行计划。 Sequence Engine:简化获取序列值的复杂度。 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 Bug修复 修复文件大小计算错误的问题。 修复偶尔出现的内存空闲后再次使用的问题。 修复主机缓存大小为0时的崩溃问题。 修复隐式主键与CTS语句的冲突问题。 修复慢查询导致的slog出错问题。 20190601 性能优化 缩短日志表MDL范围,减少MDL阻塞的可能性。 重构终止选项的代码。 Bug修复 修复审计日志中没有记录预编译语句的问题。 屏蔽无效表名的错误日志。 MySQL 5.7基础版/高可用版 20200229 新特性 Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。 在半同步模式下添加网络往返时间,并记录到性能数据。 性能优化 优化不同CPU架构下的pause指令执行时间。 Proxy短连接优化。 添加内存表查看线程池运行情况。 Bug修复 修复DDL重做日志不安全的问题。 修复io_statistics表出现错误time值的问题。 修复更改表导致服务器崩溃的问题。 修复MySQL测试用例。 20200110 性能优化 异步清除文件时继续取消小文件的链接。 优化Thread Pool性能。 thread_pool_enabled参数的默认值调整为OFF。 20191225 新特性 内部账户管理与防范:调整用户权限保护数据安全。 性能优化 提高短连接处理性能。 使用专用线程为maintain user服务,避免HA失败。 删除不必要的TCP错误日志。 优化线程池。 Bug修复 修复读写分离时mysqld进程崩溃问题。 修复密钥环引起的核心转储问题。 20191115 Bug修复 修复主备切换后审计日志显示变量的问题。 20191101 新特性 为TDE添加SM4加密算法。 如果指定了主键,则直接访问主索引。 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。 性能优化 Thread Pool:互斥优化。 引入审计日志缓冲机制,提高审计日志的性能。 Performance Insight:性能点支持线程池。 默认开启Thread Pool。 Bug修复 在处理维护用户列表时释放锁。 补充更多TCP错误信息。 20191015 新特性 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮轮循方式,保留最近的秒级性能数据。 强制将引擎从MEMORY转换为InnoDB:如果全局变量rds_force_memory_to_innodb为ON,则创建/修改表时会将表引擎从MEMORY转换为InnoDB。 TDE机制优化:添加keyring-rds插件与管控系统/密钥管理服务进行交互。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 Bug修复 修复DDL中的意外错误Error 1290。 20190925 参数修改 将系统变量auto_generate_certs的默认值由true改为false。 增加全局只读变量auto_detact_certs,默认值为false,有效值为[true | false]。 该系统变量在Server端使用OpenSSL编译时可用,用于控制Server端在启动时是否在数据目录下自动查找SSL加密证书和密钥文件,即控制是否开启Server端的证书和密钥的自动查找功能。 20190915 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 20190815 新特性 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 Bug修复 禁止在set rds_current_connection命令中设置rds_prepare_begin_id。 允许更改已锁定用户的信息。 禁止用关键字actual作为表名。 修复慢日志导致时间字段溢出的问题。 20190510版本 新特性:允许在事务内创建临时表。 20190319版本 新特性:支持在handshake报文内代理设置threadID。 20190131版本 升级到官方5.7.25版本。 关闭内存管理功能jemalloc。 修复内部变量net_lenth_size计算错误问题。 20181226版本 新特性:支持动态修改binlog-row-event-max-size,加速无主键表的复制。 修复Proxy实例内存申请异常的问题。 20181010版本 支持隐式主键。 加快无主键表的主备复制。 支持Native AIO,提升I/O性能。 20180431版本 新特性: 支持高可用版。 支持SQL审计。 增强对处于快照备份状态的实例的保护。 MySQL 5.7三节点企业版 20191128 新特性 支持读写分离。 Bug修复 修复部分场景下Follower Second_Behind_Master计算错误问题。 修复表级并行复制事务重试时死锁问题。 修复XA相关bug。 20191016 新特性 支持MySQL 5.7高可用版(本地SSD盘)升级到三节点企业版。 兼容MySQL官方GTID功能,默认不开启。 合并AliSQL MySQL 5.7基础版/高可用版 20190915版本及之前的自研功能。 Bug修复 修复重置备实例导致binlog被关闭问题。 20190909 新特性 优化大事务在三节点强一致状态下的执行效率。 支持从Leader/Follower进行Binlog转储。 支持创建只读实例。 系统表默认使用InnoDB引擎。 Bug修复 修复Follower日志清理命令失效问题。 修复参数slave_sql_verify_checksum=OFF和binlog_checksum=crc32时Slave线程异常退出问题。 20190709 新特性 支持三节点功能。 禁用semi-sync插件。 支持表级并行复制、Writeset并行复制。 支持pk_access主键查询加速。 支持线程池。 合并AliSQL MySQL 5.7基础版/高可用版 20190510版本及之前的自研功能。 MySQL 5.6 20200229 新特性 支持Proxy读写分离功能。 性能优化 优化线程池功能。 优化不同CPU架构下的pause指令执行时间。 Bug修复 修复XA事务部分提交的问题。 20200110 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 性能优化 异步清除文件时继续取消小文件的链接。 Bug修复 修复页面清理程序的睡眠时间计算不正确问题。 修复SELECT @@global.gtid_executed导致的故障转移失败问题。 修复IF CLIENT KILLED AFTER ROLLBACK TO SAVEPOINT PREVIOUS STMTS COMMITTED问题。 20191212 性能优化 删除不必要的tcp错误日志 20191115 Bug修复 修复慢日志时间戳溢出问题。 20191101 Bug修复 修复刷新日志时切换慢日志的问题,仅在执行刷新慢日志时切换慢日志。 修正部分显示错误。 20191015 新特性 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。 SM4加密算法:添加新的SM4加密算法,取代旧的SM加密算法。 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 引入审计日志缓冲机制,提高审计日志的性能。。 Bug修复 禁用pstack,避免存在大量连接时可能导致pstack无响应。 修复隐式主键与create table as select语句之间的冲突。 自动清除由二进制日志创建的临时文件。 20190815 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 20190130版本 修复部分可能导致系统不稳定的bug。 20181010版本 添加参数rocksdb_ddl_commit_in_the_middle(MyRocks)。如果这个参数被打开,部分DDL在执行过程中将会执行commit操作。 201806** (5.6.16)版本 新特性:slow log精度提升为微秒。 20180426(5.6.16)版本 新特性:引入隐藏索引,支持将索引设置为不可见,详情请参见参考文档。 修复备库apply线程的bug。 修复备库apply分区表更新时性能下降问题。 修复TokuDB下alter table comment重建整张表问题,详情请参见参考文档。 修复由show slave status/show status可能触发的死锁问题。 20171205(5.6.16)版本 修复OPTIMIZE TABLE和ONLINE ALTER TABLE同时执行时会触发死锁的问题。 修复SEQUENCE与隐含主键冲突的问题。 修复SHOW CREATE SEQUENCE问题。 修复TokuDB引擎的表统计信息错误。 修复并行OPTIMIZE表引入的死锁问题。 修复QUERY_LOG_EVENT中记录的字符集问题。 修复信号处理引起的数据库无法停止问题,详情请参见参考文档。 修复RESET MASTER引入的问题。 修复备库陷入等待的问题。 修复SHOW CREATE TABLE可能触发的进程崩溃问题。 20170927(5.6.16)版本 修复TokuDB表查询时使用错误索引问题。 20170901(5.6.16)版本 新特性: 升级SSL加密版本到TLS 1.2,详情请参见参考文档。 支持Sequence。 修复NOT IN查询在特定场景下返回结果集有误的问题。 20170530 (5.6.16)版本 新特性:支持高权限账号Kill其他账号下的连接。 20170221(5.6.16)版本 新特性:支持读写分离简介。 MySQL 5.5 20181212 修复调用系统函数gettimeofday(2) 返回值不准确的问题。该系统函数返回值为时间,常用来计算等待超时,时间不准确时会导致一些操作永不超时。
游客yl2rjx5yxwcam 2020-03-08 13:18:55 0 浏览量 回答数 0

问题

请使用discuz的童鞋升级Mysql5.6后别忘了这个操作

使用discuz的童鞋升级Mysql5.6之后别忘记执行如下语句,就是关掉5.6新增的一个优化操作,语句如下: set optimizer_switch='index_cond...
mayle 2019-12-01 21:01:26 8151 浏览量 回答数 5

回答

场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC 数据70w条 查询目的:查找语文考100分的考生 查询语句: select s.* from Student s where s.s_id in (select s_id from SC sc where sc.c_id = 0 and sc.score = 100 ) 执行时间:30248.271s 晕,为什么这么慢,先来查看下查询计划: 发现没有用到索引,type全是ALL,那么首先想到的就是建立一个索引,建立索引的字段当然是在where条件的字段。 先给sc表的c_id和score建个索引 CREATE index sc_c_id_index on SC(c_id); CREATE index sc_score_index on SC(score); 再次执行上述查询语句,时间为: 1.054s 快了3w多倍,大大缩短了查询时间,看来索引能极大程度的提高查询效率,建索引很有必要。很多时候都忘记建索引了,数据量小的的时候压根没感觉,这优化的感觉挺爽。 但是1s的时间还是太长了,还能进行优化吗,仔细看执行计划: 补充:这里有朋友问怎么查看优化后的语句,方法如下: 在命令窗口执行 有type=all 按照我之前的想法,该sql的执行的顺序应该是先执行子查询 耗时:0.001s 得到如下结果: 然后再执行 耗时:0.001s 这样就是相当快了啊,Mysql竟然不是先执行里层的查询,而是将sql优化成了exists子句,并出现了EPENDENT SUBQUERY,mysql是先执行外层查询,再执行里层的查询,这样就要循环70007*8次。 那么改用连接查询呢? 这里为了重新分析连接查询的情况,先暂时删除索引sc_c_id_index,sc_score_index 执行时间是:0.057s 效率有所提高,看看执行计划: 这里有连表的情况出现,我猜想是不是要给sc表的s_id建立个索引 在执行连接查询 时间: 1.076s,竟然时间还变长了,什么原因?查看执行计划: 优化后的查询语句为: 貌似是先做的连接查询,再进行的where条件过滤 回到前面的执行计划: 这里是先做的where条件过滤,再做连表,执行计划还不是固定的,那么我们先看下标准的sql执行顺序: 正常情况下是先join再进行where过滤,但是我们这里的情况,如果先join,将会有70w条数据发送join做操,因此先执行where过滤是明智方案 现在为了排除mysql的查询优化,我自己写一条优化后的sql 即先执行sc表的过滤,再进行表连接,执行时间为:0.054s 和之前没有建s_id索引的时间差不多,查看执行计划: 先提取sc再连表,这样效率就高多了,现在的问题是提取sc的时候出现了扫描表,那么现在可以明确需要建立相关索引 再执行查询: 执行时间为:0.001s,这个时间相当靠谱,快了50倍 执行计划: 我们会看到,先提取sc,再连表,都用到了索引。 那么再来执行下sql 执行时间0.001s 执行计划: 这里是mysql进行了查询语句优化,先执行了where过滤,再执行连接操作,且都用到了索引。 最近又重新导入一些生产数据,经测试发现,前几天优化完的sql执行效率又变低了 调整内容为SC表的数据增长到300W,学生分数更为离散。 先回顾下: show index from SC 执行sql 执行时间:0.061s,这个时间稍微慢了点 执行计划: 这里用到了intersect并集操作,即两个索引同时检索的结果再求并集,再看字段score和c_id的区分度,单从一个字段看,区分度都不是很大,从SC表检索,c_id=81检索的结果是70001,score=84的结果是39425。 而c_id=81 and score=84 的结果是897,即这两个字段联合起来的区分度是比较高的,因此建立联合索引查询效率将会更高。 从另外一个角度看,该表的数据是300w,以后会更多,就索引存储而言,都是不小的数目,随着数据量的增加,索引就不能全部加载到内存,而是要从磁盘去读取,这样索引的个数越多,读磁盘的开销就越大。 因此根据具体业务情况建立多列的联合索引是必要的,那么我们来试试吧。推荐阅读:37 个 MySQL 数据库小技巧! 执行上述查询语句,消耗时间为:0.007s,这个速度还是可以接收的 执行计划: 该语句的优化暂时告一段落 总结: mysql嵌套子查询效率确实比较低 可以将其优化成连接查询 连接表时,可以先用where条件对表进行过滤,然后做表连接(虽然mysql会对连表语句做优化) 建立合适的索引,必要时建立多列联合索引 学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要 索引优化 上面讲到子查询的优化,以及如何建立索引,而且在多个字段索引时,分别对字段建立了单个索引。推荐阅读:MySQL数据库开发的 36 条军规! 后面发现其实建立联合索引效率会更高,尤其是在数据量较大,单个列区分度不高的情况下。 单列索引 查询语句如下: 索引: 分别对sex,type,age字段做了索引,数据量为300w,查询时间:0.415s 执行计划: 发现type=index_merge 这是mysql对多个单列索引的优化,对结果集采用intersect并集操作 多列索引 我们可以在这3个列上建立多列索引,将表copy一份以便做测试 查询语句: 执行时间:0.032s,快了10多倍,且多列索引的区分度越高,提高的速度也越多 执行计划: 最左前缀 多列索引还有最左前缀的特性,执行一下语句: 都会使用到索引,即索引的第一个字段sex要出现在where条件中 索引覆盖 就是查询的列都建立了索引,这样在获取结果集的时候不用再去磁盘获取其它列的数据,直接返回索引数据即可,如: 执行时间:0.003s ,要比取所有字段快的多 排序 时间:0.139s 在排序字段上建立索引会提高排序的效率 create index user_name_index on user_test(user_name) 最后附上一些sql调优的总结,以后有时间再深入研究: 列类型尽量定义成数值类型,且长度尽可能短,如主键和外键,类型字段等等 建立单列索引 根据需要建立多列联合索引 当单个列过滤之后还有很多数据,那么索引的效率将会比较低,即列的区分度较低 如果在多个列上建立索引,那么多个列的区分度就大多了,将会有显著的效率提高。 根据业务场景建立覆盖索引只查询业务需要的字段,如果这些字段被索引覆盖,将极大的提高查询效率 多表连接的字段上需要建立索引,这样可以极大提高表连接的效率 where条件字段上需要建立索引 排序字段上需要建立索引 分组字段上需要建立索引 Where条件上不要使用运算函数,以免索引失效
茶什i 2020-01-13 10:57:49 0 浏览量 回答数 0

问题

请教一个mysql问题:查询语句中where时间范围然后加上group by后很慢,该如何优化

是阿里云的mysql,想问问这段sql有没有可优化的空间。。。之前开发都是sqlserver居多,不建索引的情况下,这样的数据应该一瞬间就能查询出来,但是想想又不至于是mysql的性能...
因为相信,所以看见。 2020-05-23 11:54:19 6 浏览量 回答数 0

问题

MySQL 5.5 和 5.6 默认参数值的差异 400 请求报错 

作为 MySQL 5.5 和 5.6 性能比较的一部分,我研究了下两个版本默认参数的差异,为了了解差异内容,我使用如下的 SQL 语句分别在 MySQL 5.5 和 5.6 版本进行查询࿰...
kun坤 2020-05-30 15:15:15 0 浏览量 回答数 1

问题

自定义 SQL 超时时间怎么办?

在 DRDS 中,DRDS 节点与 RDS 的默认的 SQL 执行超时时间是 900 秒(可以调整),但是对于某些特定的慢 SQL,其执行时间可能超过了 900 秒 。针...
猫饭先生 2019-12-01 21:20:46 1070 浏览量 回答数 0

问题

最佳实践 -MySQL-为应用选择和创建最佳索引,加速数据读取

在工作之中,由于SQL问题导致的数据库故障层出不穷,索引问题是SQL问题中常见的一种,例如:无索引,隐式转换,索引创建不合理。 使用没有创建索引的SQL访问...
李沃晟 2019-12-01 21:40:05 575 浏览量 回答数 0

问题

技术运维问题 - MYSQL使用 -RDS for MySQL实际内存分配情况介绍

RDS的内存是重要的性能参数,常常出现由于异常的sql请求以及待优化的数据库导致内存利用率升高,更有甚者由于OOM导致实例发生HA切换。 RDS for MySQL的内存大体可以分为两部分:共享内存...
李沃晟 2019-12-01 21:42:37 806 浏览量 回答数 0

问题

Select多行SQL语句慢查询优化

环境:MySQL5.5 InnoDB表 post ,主键为 id需求非常简单,根据id返回 post.name ,需要一次返回指定的多个,所以使用了where id in:select name from post where id in(...
a123456678 2019-12-01 20:13:54 812 浏览量 回答数 1

问题

让数据库变快的10个建议

大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。 1、...
mqc 2019-12-01 21:00:09 2313 浏览量 回答数 0

回答

我也是这样做的  同求!######很想帮你但是我看到PHP就头疼,你可以直接把sql分离出来吗~?######回复 @kstsca : 我不是学PHP的~要花时间去看你PHP代码就太浪费了~我意思是你吧最后拼出来的SQL代码打印出来!######所以出现了上面的 用in查询######主表goods 商品表 附表arr 商品属性表 譬如 goods id    name 1     大神 arr表 id  goodid(商品id)   arrid(商品属性id)   value(值) 1    1                       1                         ex 2    1                        2                         ex 3    1                        3                           ex   商品属性ID 1是切工  2是光泽  3是材质   现在我要查  切工ex   材质idea  的产品######可能还是涉及到 切工 ex  idea 多值的查询 ######试试这样做会不会比你的快.   $sql_f.= ',(SELECT goods_id, attr_value AS cut FROM ' . $GLOBALS['ecs']->table('goods_attr') .   ' WHERE (attr_id=2'.$cut_where . ') or '.          '(attr_id=3'.$color_where. ') or '.          '(attr_id=6'.$symmetry_where  . ') or '.          ......          ') AS new_table_name';######要注意的是每次连表都有一个as######这效率又回老路了,感觉######这样好像缺一步,处理成新表后,如何再输出各商品值呢?######好的######代码看上去很熟悉,原来是ecshop ######回复 @kstsca : 看表名,字段名就知道了######回复 @kstsca : 肯定是ecs啦######这段代码应该不是ecshop写的,你看出来应该是表名吧######头大...表设计的有问题吧######这样设计很常规吧,应该把请求让php处理好,再写sql,但现在为了省时,想直接改sql优化###### 引用来自“RickyFeng”的答案 试试这样做会不会比你的快.   $sql_f.= ',(SELECT goods_id, attr_value AS cut FROM ' . $GLOBALS['ecs']->table('goods_attr') .   ' WHERE (attr_id=2'.$cut_where . ') or '.          '(attr_id=3'.$color_where. ') or '.          '(attr_id=6'.$symmetry_where  . ') or '.          ......          ') AS new_table_name'; 改为以下方式: SELECT goods_id, attr_value AS cut FROM ' . $GLOBALS['ecs']->table('goods_attr') .' WHERE attr_id=2'.$cut_where.' UNION ALL SELECT goods_id, attr_value AS color FROM ' . $GLOBALS['ecs']->table('goods_attr') .' WHERE attr_id=3'.$color_where.' ....... ######还是谢谢热心关注我的提问。。######感觉上去 效率应该差不多的,呵呵,回去试试看######继续呼唤sql牛人 ######终极解决方法: 1:把所有数据弄到一张表里面 --- 不冗余,不是mysql, mysql根本不是数据库 2:换数据库 ######回复 @HelloChina : 总比浪费生命时光好。垃圾的mysql不支持交集运算,只能把数据取出来在应用层做集合运算。想着就蛋痛。######又看到宏哥 在让人还数据库了######回复 @kstsca : 坦率的说,这个问题无解. 你的sql 并没有什么问题. 问题在于mysql缺乏集合运算能力.######这方法太耗时了,再说一个布怎么重要客户的,没这么大费周章,现在想让那位sql牛人看看,是否优化下sql语句
kun坤 2020-05-31 13:04:42 0 浏览量 回答数 0

问题

移植 spider 到 MySQL 5.6

MariaDB 中自带了很多 MySQL 中没有的插件。我对其中的 spider 存储引擎很有兴趣。这个引擎可以让 MySQL 作为一个 proxy ,来实现 sharding、高可用等功能。这些功能已经有一些产品实现了&#x...
妙正灰 2019-12-01 21:01:10 9897 浏览量 回答数 0

问题

mysql 函数find_in_set在hql中使用?报错

FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。...
爱吃鱼的程序员 2020-06-14 21:52:53 0 浏览量 回答数 1

问题

对比ECS自建数据库与RDS性能时的注意事项

适用场景 测试ECS自建数据库库与云数据库RDS的性能差异。 背景信息 很多用户都会对比ECS自建数据库与云数据库RDS的性能,但在测试两种数据库的性能时,不仅需要保证二者处于相同的环境下࿰...
云栖大讲堂 2019-12-01 21:42:55 1114 浏览量 回答数 0

问题

SQLServer性能数据解析

磁盘相关            ins_dir = MSSQL_DIR + "/ms" + str(port)data_dir = ins_dir + '/data&#...
玄学酱 2019-12-01 22:07:38 2366 浏览量 回答数 1

问题

自定义 HINT 怎么制作?

DRDS 自定义 HINT 概要 HINT 作为一种 SQL 补充语法,在关系型数据库中扮演着非常重要的角色。它允许用户通过相关的语法影响 SQL 的执行方式,从对 SQL 进行特殊的优化。同样,...
猫饭先生 2019-12-01 21:20:44 999 浏览量 回答数 0
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询