1、查看mysql的慢查询日志是否开启 show variables like ‘%query%’; 可以看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。...这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。...log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询。 2、如何启用慢查询日志呢?...3、指定日志的输出格式 MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式: show variables like ‘%log_output%’; 设置输出格式: set...select sleep(11); 查看TABLE记录的慢日志: select * from mysql.slow_log; 这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息
MySQL之字符集 字符集介绍 gbk/gb2312 gbk/gb2312 采用双字节字符集,不论中、英文字符均使用双字符来表示,为了区分中文,将其最高位都设定成1 gb2312是gbk的子集,gbk...,好处就是节省空间,不推荐使用 MySQL字符集范围 服务器层(server) > 数据库成(database) > 数据表(table) > 字段(column) > 连接(connection) |...结果集(result) MySQL字符集优先级 连接(connection) | 结果集(result) > 字段(column) > 数据表(table) > 数据库成(database) > 服务器层...存储机制:在不够N长度时,MySQL在存储数据时,需要用填充特殊的空格,而非十六进制的20 思考: char(30),在不同的字符集中最多能存放多少个字母、汉字,以及占用空间情况 gbk: 可以存放...(长度小于255字节,使用一个字节来表示长度;大于255字节使用两个字节来表示长度) 修改数据库实例字符集 临时生效 mysql> set character_set = 'gbk'; mysql> set
因此对于MySQL来说没法使用索引进行join,只能使用Range checked for each record的方式来完成查询。...翻译过来就是collation就是一套规则,用来比较字符集中的字符。那么怎么理解这个比较字符集中的字符呢?文档给出了一个例子,例如有一个简单的字符集包括了如下的几个字符:a b A B。...这么看来collation其实就是定义了字符集中的字符需要怎么被比较以及如何排序的问题。那么在MySQL中有多少中collation呢?...大小写不敏感的话,查询b会得到B和b的结果(相信很多DBA在工作中也遇到个这个问题,明明应该一条记录,怎么就查出了两条)。...至于MySQL为啥会有这个bug,可以参见如下这两篇文章: [1].MySQL utf8之坑 [2].记住:永远不要在MySQL中使用UTF-8 那么要存一些特殊的字符并且不能出现乱码的问题怎么办?
1.简介 MySQL 支持多种字符集,使您能够使用各种字符集存储数据,并根据给定排序规则执行比较。...2.支持的字符集 MySQL 支持多种字符集,包括多个 Unicode 字符集。...3.字符集级别 MySQL 支持多个不同级别的字符集设置,包括服务器级别、数据库级别、表级别、字段级别以及字符串常量级别。...; 如果没有指定字符集或者排序规则,MySQL 使用默认的连接字符集 character_set_connection。...服务器在返回查询结果(包括字段名、字段值、错误信息等)之前需要将其转换为哪种字符集,MySQL 使用 character_set_results 作为这种转换的目标字符集。
首先是查看字符集格式 show variables where variable_name like '%character%' 然后是存储过程,用于修改表内所有字段的字符集 DROP PROCEDURE...s_tablename; END WHILE; CLOSE cur_table_structure; END; $$ #执行存储过程 CALL addColumn (); 然后还可以修改mysql
在mysql中查看字符集: show variables like ‘%char%’; 如果database和server都不是utf8,则需要配置mysql的配置文件。...在 /etc/mysql/my.cnf 中,[mysqld]的配置下,添加: character_set_server=utf8 init_connect='SET NAMES utf8' 重启mysql...database时: CREATE DATABASE IF NOT EXISTS xxxx DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 在java中连接mysql...时这样设置: datasources.url=jdbc:mysql://192.168.1.1:3306/xxxx?
https://blog.csdn.net/robinson_0612/article/details/91175314 MySQL数据库查询结果乱码,这是大家比较常见的情形。...到底是什么原因导致出现查询结果为乱码呢,本文主要通过演示来理解乱码产生的原因,以及如何解决字符集乱码,供大家参考。...– 在my.cnf中未配置客户端字符集,如果配置后,则使用配置文件中设定的字符集 [root@centos7 ~]# export LANG=en_US.UTF-8 [root@centos7...character_set_connection: 告诉字符集转换器,转换成什么编码? character_set_results: 查询的结果用什么编码?...b、如果两个字符集之间无法进行无损编码转换,一定会出现乱码。
mysql不管是互联网还是传统it,我们都是必会的技术之一,那我们会从浅入深进行mysql的全部讲解。好啦,不多说,上货。...字符集 我们使用mysql时,不管是库还是表,我们都要设置字符集,而我们常用的字符集都有什么呢? utf8 也就是utf8mb3,用1到3个字节表示一个字符。...比较规则 一个字符集可以有多个比较规则,其中有一个默认的比较规则;一个比较规则必须对应一个字符集。...字符集与比较规则的级别 字符集级别有4种。 服务器级别 数据库级别 表级别 列级别
一、MySQL字符集编码简单介绍 在使用MySQL时要注意6个需要编码的地方:系统的编码、客户端、服务端、库、表、列。...字符集编码不仅影响数据存储,还影响client程序和数据库之间的交互.在mysql中输入命令show session variables like '%char%'能够看到例如以下一些字符集(下面是以win10.... character_set_results:server返回给客户端的查询结果或者错误提示的字符集编码....二、MySQL字符集编码层次 第一部分主要是归纳了MySQL文档中关于字符集编码的说明。这部分主要说明下MySQL中字符集编码层次:服务端-->数据库-->表-->字段。 ...三、MySQL连接字符集 前面谈到的编码内容基本都不会产生乱码问题,mysql中容易产生乱码的地方在character_set_client, character_set_connection, character_set_results
表字符集: ? 将表字符集都改成utf8,运行起来还是报错。...可以在客户端工具上直接修改,也可以使用以下语句修改: alter table medicine_product default character set utf8; 库字符集: ?...将库字符集也改成utf8,还是报错,吐血!!!但是还得继续。...最后查看表创建时设置的字符集 SHOW CREATE TABLE medicine_order_total; CREATE TABLE `medicine_order_total` ( `id` bigint
比如我们每次查询相同的数据,肯定会从缓存里查询,mysql也是如此,当sql语句完全相同的时候,会直接击中缓存返回给客户端,而且所有客户端是共享同一个缓存的,但也有缓存失效的时候,比如查询系统表的时候information_schema...当缓存里查询不到数据的时候,这时候就到了语法解析,会把客户端发送过来的文本解析成mysql可以读取的数据。...我们都知道表数据是一行一行的,但这只是显示了逻辑上的概念,物理内存上如何存储的,怎么写入的,怎么查询的,都是存储引擎需要负责的事,mysql为了实现不同的功能,提供了各式各样的存储引擎。...字符集 计算机中只能存储二进制,那么字符怎么存储呢,于是建立字符与二进制的映射关系,建立映射关系需要解决两件事: 1、清楚界定字符范围(哪些字符集)。...(所以在排序的时候,如果排序没有区分大小写或者有异常,可以看看他的比较级是什么) Mysql字符集的比较规则和字符集分为四个模块:服务器级别、数据库级别、表级别、列级别。
在MySQL中如果两张表的字符排序集(Collate)不同(比如一张表为utf8mb4_general_ci, 另一张表为utf8mb4_unicode_ci),在连表查询时就可能会如下类似的错误:
character_set_connection: 连接层使用的字符集 character_set_database: 当前数据库使用的字符集 character_set_results: 查询结果使用的字符集...(2) 更新,查询涉及到得字符集 插入或更新流程字符集转换过程 character_set_client-->character_set_connection-->表(列)字符集....查询流程字符集转换过程 表(列)字符集-->character_set_result 结果转换为与客户端相同的字符集再传递给客户端....在不区分大小写(默认)的校对规则下查询, 会忽略字母大小写, 与'a'匹配的值也可以包括'A'....在区分大小写的校对规则下查询, 会严格区分字母的大小写.与'a'匹配的值只能是'a'.
ISO 8859-1 字符集合:有256个字符,在ASCII字符集基础上扩展了128个西欧常用字符(包括德法字符)。...如果字符集包含在ASCII字符集中,则采用一个字节编码,否则采用两个字没编码。 GBK字符集:对GB2312字符集进行了扩充。编码方式兼容GB2312....UTF-8字符集:收录了当今世界各个国家地区使用的字符,并且还在扩充。它兼容ASCII字符集。采用变长编码方式,编码一个字符时需要使用1到4字节。 mysql 不区分字符集和编码方案的概念。...mysql utf8mb3: "阉割"过的utf-8字符集,只使用1-3个字节表示字符。 mysql utf8mb4: 正宗的utf-8字符集,使用1-4个字节表示字符。...字符集与比较规则有四个级别:服务器级别/数据库级别/表级别/列级别 mysql> SHOW variables like "%character_set_server%"; +-------------
# 理解MySql字符集 # 字符集 字符集即为字符编码的集合。...# MySql中的字符集 MySql是一款关系型数据库,它存储的数据不应该受限于特定的语言文字,所以它支持不同字符集。...所以MySQL中我们可以按照这种虚拟关系对:database,table,column分别设置字符集,而它们使用字符集的优先关系为:column > table > database。...# 设置修改MySql中的字符集 MySql默认字符集 在安装MySql的时候我们可以通过源码编译的方式设置字符集,当然这种安装方式比较难就不做说明了,真实的环境中这么做的好处并不明显。...修改MySql默认字符集 通过配置文件修改默认字符集,如果在创建database的时候我们没有指定字符集,则该设置会默认应用于database上。
一、前言 1,有人问我,count查询为啥有时候快有时候慢 2,首先要明白count查询的真正作用 2-1:统计某个列的数量 2-1:统计行数 二、原理 1,统计列时,会查询这个列不为空的数量,它是需要计算的...where,它可以直接取到结果,因为它可以利用存储引擎的特性直接获得这个值,比如count(*) 3,统计列时,如果知道这个列不能为空,会转化为count(*),从而加快速度 所以:你要知道自己要干什么,该怎么样去用...在无可用的二级索引情况下,执行count会使MySQL扫描全表数据,当数据中存在大字段或字段较多时候,其效率非常低下(每个页只能包含较少的数据条数,需要访问的物理页较多) 三、实际应用 1,50万条数据...,没有索引,大约耗时13分钟 2,50万条数据,有索引,大约耗时354毫秒 3,原理 mysql一个数据页为:16k(默认) 能存16*1024/(4+8) =1365条数据(为什么是4+8可以看看mysql...存储页的原理) 假设每页数据耗损不存满,50% 50万条数据,需要500000/1365*2 为 732个物理页 大小为16k*732为11.4M mysql空间按区分配,一区1M,假设连续的话,需要连续读
毫无疑问,这定然是mysql字符集的配置问题。找到了解决问题的方向,那么,自然就很好办了。...解决问题 我的问题是出现在ubntu上的,如果你是windows用户,那么直接去安装mysql的根目录找配置文件就好了,修改方式和ubuntu上的是一样的。我接下来就会说明。...首先,进入到ubuntu的安装目录 cd /etc/mysql/ 如果你安装的是5.7的版本,我的就是5.7的,那么继续使用cd命令进入这个文件夹 cd mysql.conf.d 进去之后就会发现,这个其实是...mysql的各种配置文件所在的文件夹,现在你可以在百度上搜索到的mysql字符集解决办法好像都有点落后了,因为配置文件在无声无息的发生了位置改变。...结语 以上就是mysql的乱码配置过程,也可以是字符集配置过程,utf8这种编码格式是适用于所有的字符的,所以一般我们配置都是用的这种编码。
子查询系列文章的主题,在写作过程中可能会根据情况调整,也可能会插入其它不属于这个系列的文章。 本文我们先来看看不相关子查询是怎么执行的? 本文内容基于 MySQL 8.0.29 源码。 目录 1....执行流程 我们介绍的执行流程,不是整条 SQL 的完整执行流程,只会涉及到子查询相关的那些步骤。 查询优化阶段,MySQL 确定了要使用物化策略执行子查询之后,就会创建临时表。...自动优化 为了让 SQL 执行的更快,MySQL 在很多细节处做了优化,对包含子查询的 where 条件判断所做的优化就是其中之一。...MySQL 没有为这种场景做优化,我们可以手动优化,写 SQL 的时候,把这种包含子查询的 where 条件放在最后,尽可能让 MySQL 少做一点无用工,从而让 SQL 可以执行的更快一点。 6....相关文章: 你好奇过 MySQL 内部临时表存了什么吗? where field in(...) 是怎么执行的? ----
在工作中,有时候我们更新一个表数据的时候,需要更新的数据来自其他查询出来的结果,这个时候sql怎么写? 如下: 将tb_option表中name 和valued的值进行互换 ?
怎么会产生乱码现象的,怎么解决?只要翻下网上的解决方案,马上就可以得出答案:“在获得连接之后执行一句set names 'gb2312'”,但这样做的原因是什么呢?总结一下我的经验。...出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。...出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。...字符集查询 1) status mysql> status; -------------- mysql Ver 14.14 Distrib 5.1.54, for debian-linux-gnu.../my.cnf 1)去掉注释,修改为: max_connections = 200 2) 重启MySQL生效 参考推荐: mysql查询中文问题解决方法 第10章:字符集支持(MySQL官方,推荐)
领取专属 10元无门槛券
手把手带您无忧上云