今天在线上遇到了一个MySQL字符比较的问题,感觉很有意思,专门研究了下,估计大家都没有遇到过,这里跟大家分享一下。
单机proxysql+mgr单主,已经配置好了读写分离策略。这些都不是本文的重点,就一带而过吧。
用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。
mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如:在索引列中选取最小值,可以单独查找索引来完成,不需要在执行时访问表
一、故事背景 在开始之前,先列出数据库的运行环境信息 操作系统:redhat 7.2 x8_64 文件系统:xfs 数据库版本:MySQL 5.7.17 主机配置: * CPU:32 vcpus * 内存:128 G * 磁盘:sandisk 单盘 SSD lvm 200G(只存放mysql的data和binlog) 主要配置参数设置: innodb_buffer_pool_size = 96G,innodb_log_file_size = 2G,innodb_flush_method = O_DI
最近遇到了不少MySQL性能优化的案例,都和子查询有关,今天就这个话题做一定的分析。
上一篇讲到字符、字符集、字符编码,粗略的一笔带过MySQL的编码,本篇想要讲讲字符编码在MySQL数据库中的应用。不仅仅是本篇文章,其他博主的文章也是,多多阅读他人的好文,才可以提升自己的水平。再次借用六一居士写的《卖油翁》来激励大家,多多阅读。
这篇文章详细介绍一下MySQL中的字符集和字符序相关的问题,里里外外地了解一下字符集和字符序的方方面面,同时重点说明一下开发中需要注意的问题。
近期多次聊到sql_mode的话题,也是多次遇到相关问题,今天就趁热打铁,再给大家带来一个sql_mode的案例分享。
字符串函数 函数 用法 ASCII(S) 返回字符串S中的第一个字符的ASCII码值 CHAR_LENGTH(s) 返回字符串s的字符数。作用与CHARACTER_LENGTH(s)相同
MySQL作为全球最流行的数据库,相关从业者不计其数,可以说十个码农里至少有九个使用过MySQL。MySQL的开发人员或者DBA,经常使用EXPLAIN语句来查看SQL的执行计划。EXPLAIN的解读文章多如牛毛,每个开发人员对EXPLAIN结果都有自己的理解。然而,你真的会使用EXPLAIN吗?
墨墨导读:字符集是一组符号和编码。collation是一组用于比较字符集中的字符的规则。
Hash Join作为表连接的基础连接类型,各大关系型数据库(譬如Oracle、sqlserver、Postgres等)很早都支持了Hash Join这种连接类型。作为关系型数据库领域的领袖,Oracle数据库支持三种主流的连接类型:Nested Loop Join、Hash Join 和 Sort Merge Join。而作为最流行的关系型数据库的MySQL 却一直没有支持Hash Join,这点一直为人诟病。千呼万唤始出来,MySQL 8.0.18开始终于支持了Hash Join的连接算法。MySQL 8.0 的所有新特性中,Hash Join 曾经最让我期待的一个新特性。
监控可以使用ProxySQL本身自动的监控,也可以使用PMM来监控。PMM(Percona Monitoring and Management)是一个免费的开源平台,用于管理和监视数据库性能,在docker环境中即可运行。它可以主动管理和监控MySQL(AWS RDS MySQL、Aurora MySQL、用户自建MySQL实例)、MariaDB、MongoDB、PostgreSQL等数据库,也可以监控ProxySQL中间件,并提供了众多指标与多样告警方式。
之前有研发反馈,同一个SQL在测试环境和生产环境,数据一样,跑出来的结果却有差异。 经过排查后,发现2套环境的表字符集不一样。测试之前是5.6升级到8.0的,表字符集是utf8_general_ci的,而生产一直就是用的8.0,表字符集是utf8mb4_0900_ai_ci。
之前发过一篇MHA的文章,介绍了MHA相关的知识和功能测试,连接为:【DB宝19】在Docker中使用MySQL高可用之MHA 。今天这一篇给大家分享一下“MHA+中间件ProxySQL”来实现读写分离+负载均衡的相关知识。
相信大家都知道,索引是有序的;不过,在MySQL之前版本中,只支持升序索引,不支持降序索引,这会带来一些问题;在最新的MySQL 8.0版本中,终于引入了降序索引,接下来我们就来看一看。
下载地址:https://github.com/akopytov/sysbench/archive/refs/tags/1.0.20.tar.gz
数据库的死锁,是开发和DBA都非常关注的信息,但是在MySQL中,查看死锁信息却不是非常方便,通过show engine innodb status只能查看最近一次发生的死锁信息,之前的死锁信息会被覆盖掉;这时候我们可以利用pt-deadlock-logger这个工具实现这个需求。
他说:明明表名的入参是 test ,为什么展示到界面的记录包括 test 这条记录?
相信很多人在MySQL中看到了where条件中使用到了or就会以为这样是不会走索引的,通常会使用union all或者in 来进行优化,事实并不是想象的这样具体问题具体分析。
MySQL5.7.38主从架构,主节点唯一索引上(唯一索引不是主键)有重复值,全部从节点报1062,SQL线程状态异常,根据SQL线程报的binlog位置点,insert 数据时有重复值,插入失败
我整理的另一篇文章 MySQL常用系统表汇总 : https://blog.fastrun.cn/2016/07/10/1-27/
我们都知道 MySQL 8.0 与 MySQL 5.7 的区别之一就是默认字符集从 latin1 改成了 utf8mb4 ,除此之外,MySQL 8.0 下的字符集和比较规则还有没有其他变化呢?本篇文章我们一起来学习下。
某个客户反馈查询数据库发现 information_schema.tables 的 data_free 值突发异常,达到 13G 左右。如图:
将字符映射成二进制数据的过程叫编码,将二进制数据映射到字符的过程叫做解码 ASCII字符集: 有128个字符。包括空格/标点符号/数字/大小写字母和不可见字符。 📷 ISO 8859-1 字符集合:有256个字符,在ASCII字符集基础上扩展了128个西欧常用字符(包括德法字符)。它可以使用一个字节来进行编码(它的别名称叫Latin1) GB2312字符集:包括汉子和拉丁字母/希腊字母/日文/俄文等。如果字符集包含在ASCII字符集中,则采用一个字节编码,否则采用两个字没编码。 GBK字符集:对GB2
最近,有一位朋友突然微信联系我,说MySQL出现了数据丢失的情况;毫无疑问,对于一个DBA而言,这无疑是最令人紧张的一件事情,没有之一;听到这个消息后,我也就立刻投入到问题排查中。
上面就是mysql客户端和服务端的交互流程,然后结合实际中的抓包工具来看先这个过程。这里使用php的PDO扩展连接数据库并执行一条查询语句,抓包情况如下
网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。
个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主
商城系统中,抢购和秒杀是很常见的营销场景,在一定时间内有大量的用户访问商场下单,主要需要解决的问题有两个:
采用Windows+Apache+MySQL+php。选取的套件为wampServer。
关于MySQL逻辑备份恢复,相信大家都不陌生,平时使用频率也是比较高;这里就简单介绍下:
对于那些删除了尾随字符或比较忽略了尾随字符的情况,如果列具有需要唯一值的索引,则在列中插入仅在尾随字符数量上不同的值将导致重复键错误。
了解一个产品,从性能测试下手是最好的方法,这里就是针对金融级MySQL解决方案RadonDB中的核心组件Radon进行一次性能测试。
SQL_MODE:MySQL特有的一个属性,用途很广,可以通过设置属性来实现某些功能支持
爱可生 DBA 团队成员,负责项目中数据库故障与平台问题解决,对数据库高可用与分布式技术情有独钟。
情况二:当长度n大于str字符串的原始长度,小于拼接后的字符串长度后,显示原来的字符串str+pad继续补齐到n个字符串
排序规则(Collation)是比较和排序字符串的一种规则,每个字符集都会有默认的排序规则,可以使用命令 SHOW CHARSET 来查看:
rwctf{PHP_1s_Th3_B3st_L@ngvag3_1n_the_w0r1d}
同事咨询个问题:某个业务基于 INFORMATION_SCHEMA 统计表的信息(比如最大值)向表里面插入数据。
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说mysql 存储过程 语法[mysql存储过程应用场景],希望能够帮助大家进步!!!
CTE,Common Table Expressions,是一个非常实用的功能,可以有效降低SQL的编写难度。CTE,也是大多数关系型数据库都支持的,包括DB2、Oracle、SQL Server、PostgreSQL等,唯独MySQL不支持。不过,在MySQL 8.0版本中,终于是补全了该功能,接下来我们就来看一下。
一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data-types.html http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html mysql数据类型概览 #1. 数字: 整型:tinyinit int bigint 小数: float :在位数比较短的情况
有客户反馈,他们对一个 VARCHAR 类型的字段进行长度扩容。第一次很快就可以修改好,但是第二次却需要执行很久。比较疑惑明明表中的数据量是差不多的,为什么从 VARCHAR(20) 调整为 VARCHAR(50) 就比较快,但是从 VARCHAR(50) 调整为 VARCHAR(100) 就需要执行很久呢? 于是我们对该情况进行场景复现并进行问题分析。
在MySQL 5.7.6或者更高版本,能够通过 performance_schema 观察alter table的进度。方法如下:
领取专属 10元无门槛券
手把手带您无忧上云