数据库
文章平均质量分 55
mysql相关知识积累
firesea
这个作者很懒,什么都没留下…
展开
-
记一次磁盘写满导致mysql服务挂掉问题的排查过程
问题:测试环境13.113数据库服务器mysql服务不可用1、df -h检查服务器磁盘占用情况,发现磁盘占满,预计是导致mysql服务不可用的原因,通过清理没用的日志文件,重新启动mysql,发现服务可以正常启动。此时发现,空间占用还在以每小时2G的速度增加,显然是因为有某个进程在写入磁盘。下面进行空间优化及问题排查。2、du -h --max-depth=10 /* | awk '{ if($1 ~ /M/){split($1, arr, "M")}; if(($1 ~ /G/) || (原创 2021-08-04 08:11:56 · 1171 阅读 · 0 评论 -
Mysql行列转化实例
DROP TABLE IF EXISTS tmp_user;CREATE TABLE tmp_user( id INT (11) NOT NULL auto_increment, name VARCHAR(20) COMMENT '姓名', PRIMARY KEY (id))ENGINE = INNODB DEFAULT CHARSET = utf8;DROP TABLE IF EXISTS tmp_subject;CREATE TABLE tmp_subject( id INT (11.原创 2021-07-27 07:51:43 · 153 阅读 · 0 评论 -
Mysql分类排序sql
今天在生产环境遇到一个要求用sql统计某分类下产品个数排名的问题,记录如下:为屏蔽真实产品数据,用地域分类表及部分数据做记录。一、创建表结构CREATE TABLE `area_dic` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '地区名称', `fid` int(10) unsigned NOT NULL DEFAULT '0',原创 2021-07-26 10:56:50 · 634 阅读 · 0 评论 -
Mysql查询优化
一、count()的优化它可以统计某个列值的数量,也可以统计行数。在统计列值的时候要求列值是非空的。如果希望知道的是结果集的行数,最好使用count(*),这样写意义清晰,性能会更好。如果mysql知道某列col不可能为null,那么mysql会将count(col)表达式优化为count(*)。MyISAM的count()函数快的前提是,没有任何where条件,这样mysql可以从统计表中直接获取count()值。当sql语句中带有where字句,MyISAM的count()和其他引擎没有任何原创 2021-07-26 09:15:52 · 125 阅读 · 0 评论 -
Mysql中sql_mode使用详解
一、Sql_mode是什么?Sql_mode是一组mysql的语法校验规则,定义了mysql应该支持的sql语法、数据校验等。二、如何查看当前sql_mode配置?方法一:select @@sql_mode;方法二:select @@SESSION.sql_mode;方法三:select @@GLOBAL.sql_mode;三、如何设置sql_mode?1、通过命令设置SET sql_mode = '';SET SESSION sql_mode = '';SE原创 2021-07-13 10:18:38 · 22517 阅读 · 1 评论 -
mysql前缀索引和索引选择性
索引选择性:不重复的索引值和记录总数的比值索引选择性越高,查询效率越高,因为可以过滤掉更多的行如何确定前缀索引的长度?方法一:步骤一、查询来自同一城市的学生最多的10个城市的学生select count(1) as num ,cityname from student group by cityname order by num desc limit 10;步骤二、按照城市前几个字符,分别算来自这些城市最多的10个城市学生select count(1) as num ,left(ci原创 2021-07-09 10:17:35 · 181 阅读 · 0 评论 -
mysql in变量值的处理方案
Mysql数据库中,在一个范围存查询数据时候,有时候我们会用到in例如:SELECT contract_code FROM ContractInfo WHERE contract_code IN ('ht123456','ht654321');很显然,这个查询没有任何问题,可以正确执行。那么,如果将'ht123456','ht654321'作为变量传递给mysql,mysql是否还能执行呢?SET @nu = "'ht123456','ht654321'";select cont原创 2021-07-08 11:31:08 · 2222 阅读 · 0 评论