MySQL / MariaDB
文章平均质量分 75
蛙鳜鸡鹳狸猿
这个作者很懒,什么都没留下…
展开
-
MySQL隐形的磁盘吞食兽——生成临时表的查询
我们的潜意识里,数据库对磁盘的消耗肯定是以INSERT、UPDATE等为首的相关DML引起的。这属于常规的显性的情况。与此同时,在执行一些复杂SELECT性质(包含需要进行查询的DML)的查询时,MySQL会将中间结果集缓存到一张张临时表中。这些临时表原始是内存临时表(in-memory temporary table),当其大小超过一定阈值(tmp_table_size)后,MySQL会直接将其转存为磁盘实体表(on-disk table),这就是由查询产生的潜在的磁盘消耗的内部机制。原创 2022-11-18 17:17:14 · 1031 阅读 · 3 评论 -
JAVA MyBatis读取MySQL UNSIGNED ZEROFILL左侧零丢失修复笔记
项目中开发同学反映从MySQL中查询到的UNSIGNED ZEROFILL整型定义的字段值,前面自动补全的“0”都丢失了。经研究从MySQL8.0.17版本开始移除了ZEROFILL修饰语。新版的MyBatis也紧跟MySQL的release,不再支持对UNSIGNED ZEROFILL整型字段的有效查询。As of MySQL 8.0.17, the UNSIGNED attribute is deprecated for columns of type FLOAT, DOUBLE, and原创 2020-11-27 19:26:15 · 1148 阅读 · 0 评论 -
介绍几款实用的MySQL和数据库Web客户端
1.Chrome MySQL Admin2.OmniDB3.phpMyAdmin在“客户端-服务器”的“cs模式”里浏览器应该算是最流行的客户端了,所以使用浏览器访问服务端是最便利的方式。大的公司以及注重信息安全的组织都会严格控制员工安置和使用各种客户端软件程序,这种时候,完全兼容的浏览器甚至可能成为唯一可用的客户端工具。这也成为Web客户端的生命力。下文安利几个实际工作中用到的MySQL数据库的Web客户端访问程序。1.Chrome MySQL Adminhttps://www.e.原创 2020-07-15 14:53:10 · 7502 阅读 · 0 评论 -
从MySQL表中计算财务数据保留小数位以及保留或省略小数位00的SQL写法
从MySQL表中查询财务数据时经常需要计算金钱字段,对于不同的数据会遇到不同的处理要求,这边遇到的情况包括:遇到NULL值返回0 计算结果永远保留两位小数(包括.00) 如果可以整除的话计算结果省略小数位(不包括.00)以下写法作为参考。SELECT /* if record is NULL return 0 ; else return decimal of record / 100 with suffix precision remaining (eg: record 100 ret原创 2020-07-02 11:12:41 · 1306 阅读 · 0 评论 -
从MySQL表中查询前一个月记录的SQL写法
关系型数据库在设计表的时候一般都会在业务表中定义一个‘YYYY-MM-DD HH:MM:SS’格式的DATETIME或TIMESTAMP(为了系统向后兼容一般现在很少使用TIMESTAMP了)型字段来存储该条记录写入数据库时的时间。以下示例为获取表中前一个月记录的DQL写法。SELECT t.*FROM `table` AS tWHERE YEAR(t.`datetime_column`) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))AND MONT原创 2020-07-01 11:00:19 · 1585 阅读 · 0 评论 -
Python调用_mysql_connector报错“MySQLInterfaceError: Lost connection to MySQL server during query”修复笔记
背景:帮产品写一个类OLAP的报表脚本。场景:Python连接业务库MySQL读取原始数据并计算后将结果写入新的报表库MySQL。问题:DQL和DDL手动执行都没有任何问题但是放到Python脚本中跑一段时间后会报错。Python的Traceback报错信息_mysql_connector.MySQLInterfaceError: Lost connection to MySQL...原创 2020-03-31 01:42:05 · 1644 阅读 · 0 评论 -
MySQL安装初始化必须要指定的参数innodb-data-file-path和innodb-log-files-in-group
源码编译安装或者解压linux-glibc压缩包安装MySQL,在启动MySQL实例前,都有一步初始化mysqld server的过程,即“mysql/bin/mysqld --initialize ”,除了“initialize”选项,还可以制定很多其他各种参数,参考https://dev.mysql.com/doc/refman/5.7/en/server-system-variables....原创 2020-01-31 22:11:43 · 2335 阅读 · 0 评论 -
Percona Toolkit使用之pt-mysql-summary
pt-mysql-summary的功能是以优雅的形式汇总MySQL服务器信息。 用法如下:pt-mysql-summary [OPTIONS] pt-mysql-summary方便地汇总出MySQL数据库服务器的状态和配置,使你可以一目了然地获得这些信息。这不是一个调优或者诊断的工具。它会生成一个报告,可以很容易地diff或者不丢失格式地复制到Email里。它应原创 2018-04-08 03:38:25 · 1170 阅读 · 0 评论 -
【TRUNCATE】使用之MySQL官方文档说明
文档地址:http://dev.mysql.com/doc/refman/5.6/en/truncate-table.html个人说明:在学校里考过三次CET4最高一次考了388可见翻译水平有限噢仅供参考翻译目的:自己的另一篇博文准备引用13.1.33 TRUNCATE TABLE SyntaxTRUNCATE [TABLE] tbl_nameTRU原创 2016-09-16 06:08:11 · 1894 阅读 · 0 评论 -
Percona Toolkit使用之pt-fk-error-logger
pt-fk-error-logger的功能是记录MySQL外键错误。其原理、实现、功能以及用法同工具包里面的另一个工具pt-deadlock-logger(https://blog.csdn.net/sweeper_freedoman/article/details/79317758)一致,区别只是在于一个log外键错误另一个log死锁错误。 用法如下:pt-fk-error-原创 2018-03-31 15:24:38 · 661 阅读 · 0 评论 -
Percona Toolkit使用之pt-show-grants
pt-show-grants的功能是格式化打印输出MySQL上的赋权,以便你可以有效地复制、比较以及版本控制。 用法如下:pt-show-grants [OPTIONS] [DSN] pt-show-grants展示一台MySQL服务器的赋权(用户权限)。 使用示例:pt-show-grantspt-show-grants --separa原创 2018-04-14 14:56:27 · 2063 阅读 · 0 评论 -
Percona Toolkit使用之pt-slave-delay
pt-slave-delay的功能是给MySQL slave与它的master之间制造一个延迟。 用法如下:pt-slave-delay [OPTIONS] SLAVE_DSN [MASTER_DSN] pt-slave-delay按照需要启动和关闭slave服务器以使它滞后于master。SLAVE_DSN和MASTER_DSN使用DSN(MySQL连接访问)原创 2018-04-14 18:00:31 · 434 阅读 · 0 评论 -
Percona Toolkit使用之pt-heartbeat
pt-heartbeat的功能是监控MySQL复制延迟。 用法如下:pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop pt-heartbeat测算MySQL或者PostgreSQL服务器上的复制延迟。你可以使用它来更新master或者监控replica。如若可能,pt-heartbeat从你的.m...原创 2018-04-03 02:16:42 · 605 阅读 · 0 评论 -
Percona Toolkit使用之pt-online-schema-change
pt-online-schema-change的功能是不加锁的情况下更改表。 用法如下:pt-online-schema-change [OPTIONS] DSN pt-online-schema-change在不堵塞读写的情况下修改表结构。在DSN(MySQL连接访问)里指定库和表。在没有认真阅读文档和检查你的备份前,不要使用该工具喲! ①给`sa原创 2018-04-12 22:00:14 · 527 阅读 · 0 评论 -
【DISTINCT】优化之MySQL官方文档说明
文档地址:http://dev.mysql.com/doc/refman/5.6/en/distinct-optimization.html8.2.1.17 DISTINCT Optimization很多情况下,DISTINCT结合ORDER BY使用时需要产生(内存)临时表。因为DISTINCT可能会(结合)用到GROUP BY,请参考MySQL是如何处理那些不是原创 2016-09-25 12:58:15 · 876 阅读 · 0 评论 -
【SUBSTRING_INDEX】MySQL官方示例
文档地址:http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_substring-index返回来自于字符串“str”,出现在以分隔符“delim”所分割的“count”个之前的子字符串。如果“count”是正值,返回到最后一个分隔符左边的所有部分(从左开始计数);如果“count”是负值,返回原创 2016-10-01 11:15:22 · 957 阅读 · 0 评论 -
Percona Toolkit使用之pt-config-diff
pt-config-diff的功能是diff不同的MySQL配置文件以及不同的服务器变量设置。即diff出MySQL实例之间的不同配置。 用法如下:pt-config-diff [OPTIONS] CONFIG CONFIG [CONFIG...] CONFIG可以是配置文件或者DSN(MySQL访问连接)。至少需要给出两个CONFIG。就像标准Unix的“ d原创 2018-02-05 09:49:45 · 1312 阅读 · 0 评论 -
Percona Toolkit使用之pt-deadlock-logger
pt-deadlock-logger的功能是记录MySQL死锁。 用法如下:pt-deadlock-logger [OPTIONS] DSN pt-deadlock-logger记录给出DSN(MySQL访问连接)上MySQL死锁的信息。死锁信息会打印到STDOUT,也可以通过指定“ --dest ”选项保存到一张表。除非指定了“ --run-time ”或者“原创 2018-02-12 18:19:33 · 1016 阅读 · 0 评论 -
Percona Toolkit使用之pt-duplicate-key-checker
pt-duplicate-key-checker的功能是查找出MySQL表中的重复索引和外键。 用法如下:pt-duplicate-key-checker [OPTIONS] [DSN] pt-duplicate-key-checker通过检查MySQL表来查找重复或者冗余的索引和外键。连接参数读取自MySQL配置文件。pt-duplicate-key-原创 2018-02-14 00:14:32 · 752 阅读 · 0 评论 -
MySQL InnoDB表恢复
文档地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-recovery.html14.18.2 InnoDB 恢复本章节讲述InnoDB表恢复。内容包括:Point-in-Time恢复从数据损坏或磁盘故障恢复InnoDB崩溃恢复崩溃恢复中的表空间发现(5.7引进)Point-in-Time恢复原创 2017-07-09 06:53:17 · 1844 阅读 · 0 评论 -
What Is New in MySQL 5.7之新特性篇
MySQL 5.7新增加的特性以下特性已经被添加到MySQL 5.7:l 安全性改进。添加这些安全改进:Ø 服务器现在要求“mysql.user”系统表里的账户记录行有一个非空“plugin”字段值来禁用空值账户。关于服务器更新介绍,参考Section 2.11.1.1, “Changes Affecting Upgrades to MySQL 5.原创 2017-05-20 22:09:39 · 902 阅读 · 0 评论 -
【CONCAT】使用之MySQL官方文档说明
文档地址:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concat 返回一个产生于进行参数组合操作的字符串。可以包含一个或多个参数。如果所有的参数都是非二进制字符串,返回的结果是一个非二进制字符串。如果参数里面包含二进制字符串,返回的结果是一个二进制字符串。数值参数被转换成与其对等原创 2017-01-16 20:35:40 · 878 阅读 · 0 评论 -
【EXPLAIN】“type”字段详解之MySQL官方文档说明
文档地址:http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-join-typesEXPLAINJoinTypesEXPLAIN命令输出中的type字段返回了表是如何关联的。在JSON格式化输出中,该值可以查询access_type的键值。以下列表给出了关联方式,从最好到最差的方式排序原创 2016-10-14 23:14:35 · 2243 阅读 · 0 评论 -
【GROUP_CONCAT】使用之MySQL官方文档说明
文档地址:http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html#function_group-concatGROUP_CONCAT(expr)该函数以源自于一个群组的被拼接的非空值返回一个字符串结果。如果没有非空值它返回NULL。完整的语法如下:GROUP_CONCAT([DISTINCT]原创 2016-10-01 13:29:16 · 898 阅读 · 0 评论 -
Percona Toolkit使用之pt-kill
pt-kill的功能是杀死匹配一定条件的MySQL查询。 用法如下:pt-kill [OPTIONS] [DSN] pt-kill杀死MySQL连接。如果没有给出文件,pt-kill连接到MySQL然后从“ SHOW PROCESSLIST ”命令输出中获取查询。否则,就从包含有“ SHOW PROCESSLIST ”输出的一个或者多个文件中读取查询。如果文件是原创 2018-04-07 02:35:19 · 1524 阅读 · 0 评论 -
Percona Toolkit使用之pt-query-digest
pt-query-digest的功能是分析日志、进程列表以及tcpdump里的MySQL查询。 用法如下:pt-query-digest [OPTIONS] [FILES] [DSN] pt-query-digest分析慢查询日志、查询日志以及二进制日志文件里的MySQL查询。它也可以分析“ SHOW PROCESSLIST ”里的查询以及来自tcpdump的M原创 2018-04-14 00:05:23 · 901 阅读 · 0 评论 -
Percona Toolkit使用之pt-table-sync
pt-table-sync的功能是有效地同步MySQL表数据。 用法如下:pt-table-sync [OPTIONS] DSN [DSN] pt-table-sync有效地于MySQL表之间同步数据。 该工具会修改数据,因此为了尽可能安全,在使用它之前你最好备份一下你的数据。当使用--replicate或者--sync-to-master方式同步repli原创 2018-05-08 23:11:56 · 1990 阅读 · 7 评论 -
一个执行MySQL常规读写操作的Python脚本
应用层面对数据库的操作集中在读和写上面,具体可以主要细分为以下三个常规需求。①写(DDL、DML):不需要实际返回值(非程序退出码的查询结果集)②读(DQL):需要返回查询结果集(或None)③读(DQL):虽然也关注查询结果,但只关注查询结果的布尔(bool)性,即判断是否存在。本脚本主要就是为了实现MySQL / MariaDB这三方面的操作需求,同时做了一些额外但常规的封...原创 2019-07-16 01:50:28 · 361 阅读 · 0 评论 -
Python查询MySQL结果并以dict / JSON格式返回
Python内部以tuple格式实现关系型数据库的查询结果。但在程序与程序、接口与接口之间,dict或者JSON格式更加方便和通用一点,所以从数据库中查询到的结果往往需要转换一下。这就包括两种手段:一种手段是将tuple中的每个记录值与其对应的字段名zip一下,然后构造成dict(https://dev.mysql.com/doc/connector-python/en/connector-pyt...原创 2019-06-09 19:53:10 · 4469 阅读 · 2 评论 -
Ubuntu Linux系统MySQL8.0源码编译安装笔记
①安装依赖个人本地操作系统为Ubuntu18.04LTS,编译安装需要以下依赖。apt install build-essential cmake bison libncurses5-dev libssl-dev pkg-config详细依赖列表参考https://dev.mysql.com/doc/refman/8.0/en/source-installation.html。如果有...原创 2019-06-09 19:56:11 · 7501 阅读 · 0 评论 -
Python检查写入MySQL的数据是否符合字段的数据类型定义
MySQL等传统数据库都有字段数据类型定义的设计。定义好字段类型以后,往字段里面插入/更新的数据,就要复合其数据类型的定义了,不然会写入报错。程序中往数据库里写入数据的时候,为了避免写入错误的发生,往往在写入之前需要判断一下写入数据是否复合数据库定义。以下是自己写的MySQL / MariaDB中一些主要的常规数据类型的Python检查。#!/usr/bin/env python3# -*...原创 2019-05-11 18:06:38 · 685 阅读 · 0 评论 -
Ubuntu Linux系统MariaDB10.3源码编译安装笔记
MySQL和MariaDB可算是真正的亲姐妹,二者分别取名自“MySQL之父”Michael Widenius(江湖上称作Monty)的大女儿My Widenius(与前妻所生)和小女儿Maria Widenius(与现任妻子所生)。Oracle收购Sun公司后,之前被Monty卖给Sun的MySQL也被Oracle继承了。Oracle是世界上最大的商业数据库厂商,因为担心Oracle独裁MySQ...原创 2019-04-28 19:48:50 · 1830 阅读 · 0 评论 -
Elasticsearch官方Web端控制台管理维护程序Kibana安装笔记
安装好Elasticsearch(https://blog.csdn.net/sweeper_freedoman/article/details/86227778)搜索引擎以及Logstash(https://blog.csdn.net/sweeper_freedoman/article/details/86300513)工具将数据从MySQL导入后,可以选择性地安装Elasticsearch官方...原创 2019-01-17 15:36:36 · 459 阅读 · 0 评论 -
MySQL数据导入Elasticsearch工具Logstash安装笔记
安装好Elasticsearch以后(https://blog.csdn.net/sweeper_freedoman/article/details/86227778),需要将数据导进去。项目数据是很常规的情况,存储在MySQL里面。从MySQL导入数据到Elasticsearch里,查了一下有Logstash工具,简单看了一下文档,根据安装配置来看,其实现为定时执行自定义的SQL查询语句,理解起...原创 2019-01-11 15:38:18 · 777 阅读 · 0 评论 -
MySQL Connector/Python如何写入emoji表情等长字节特殊符号?
1.MySQL中定义对应的表/字段的字符编码为utf8mb4MySQL引入utf8mb4将最大存储3字节字符长度的utf8扩展到4字节,以存储包括emoji表情在内的4字节长字符文本。所以使用MySQL Connector/Python将长字节特殊符号写入MySQL前,需要先保证正确的表定义。例如,以下`chat_message_record`.`message`字段。CREATE TA...原创 2019-01-04 23:45:23 · 1748 阅读 · 0 评论 -
MySQL全文检索fulltext日语解析插件MeCab学习笔记
MySQL原始内置的全文检索(Full-Text Search)只适用于像英文这些词语之间有天然分隔符(如空格)的自然语言,MySQL5.7.6开始引入ngram full-text parser plugin,采用手动设置词语长度的方式进行人工分词,这可以作为CJK(Chinese、Japanese、Korean)语系全文检索的手段,具体可以参考之前的使用笔记:https://blog.csdn...原创 2018-12-24 16:50:16 · 1542 阅读 · 0 评论 -
Web展示MySQL库表结构和字段定义的PHP小脚本
MySQL数据库的库表结构和字段定义等元数据可以很方便地在`information_schema`系统库中查询到,但工作中一些非数据库岗位的同学很多都不了解这一点,经常会碰到过来询问某某数据存在哪张表的情况。如果能把数据库的表框架信息比较直观地展示出来,那就既方便了其他同学查询,也减轻了一些额外的“非战斗性”工作量。所以,就想着写一个Web页面吧,上网查了查资料,用PHP写了一个个人称作“Tabl...原创 2018-11-24 01:28:20 · 522 阅读 · 0 评论 -
数据库面试:分页查询的SQL写法
分页是很多网站应用或管理系统比较常见的需要实现的需求,是相关开发同学常碰到的需要写的查询。开发面试中会不会被问到用SQL写分页,因为个人不是开发,就不得而知了。在之前自己参加的数据库岗位的面试中,被问到用SQL写分页,所以这里记录一下。SELECT t.`columnA`, t.`columnB`, t.`columnC`FROM `table` AS tORDER BY t.`...原创 2018-08-25 21:09:51 · 1186 阅读 · 0 评论 -
数据库中将数字类型存储成字符型有哪些坏处?
工作中经常见到一些设计粗糙的数据库,其中将数字类型的字段定义和存储成字符型是一种比较常见的情况。部分开发同学或者非数据库岗位很多为了图方便,往往又不在意这些细节,除非等到出现可见的或者一些不可见的问题时才会去研究隐藏其后的真相。所以,这里简单总结一下,在数据库系统中,将数字类型存储成字符类型会有哪些不好的地方。以关系型数据库MySQL示例。 ①字符类型往往比数字类型占用更多的存储...原创 2018-07-22 22:30:30 · 4636 阅读 · 0 评论 -
Percona Toolkit使用之pt-variable-advisor
pt-variable-advisor的功能是分析MySQL系统变量配置然后对潜在问题提出建议。 用法如下:pt-variable-advisor [OPTIONS] [DSN] pt-variable-advisor分析系统变量配置然后对潜在问题提出建议。 ①从localhost获取SHOW VARIABLES。pt-variable-advisor local...原创 2018-06-14 18:37:54 · 1383 阅读 · 0 评论