MySQL
文章平均质量分 81
MySQL应用
夏之七
立足小世界,日积跬步;沟通大世界,万川映月。
展开
-
从简单实例来看 left join 如何去重
从简单实例来看left join如何去重原创 2022-06-17 18:13:19 · 4165 阅读 · 0 评论 -
SQL存储过程编程笔记
1、引言最近写了一个存储过程用于统计数据。由于好长时间没有写存储过程,重新捡起来还是花费了一点时间。这里做个笔记,将此次存储过程用到的一些基础知识点做个简单的小结。(注意:这里数据库用的是postgresql)2、背景表1:第三方服务每10分钟会写一次数据到表1,每次写入都是在表中插入一条新的数据,因此一个设备一天在表中有多条数据。CREATE TABLE tb_check ( id serial NOT NULL, --自增ID devicecode text NULL, ..原创 2022-05-09 20:15:26 · 307 阅读 · 0 评论 -
MySQL乱码解决方案
1、问题引出客户端应用程序查询数据库数据,显示乱码,如何解决?2、解决方案一般来说,可以下面几个方面进行排查:1)首先要明确客户端使用何种编码格式,这是最重要的(IE6一般使用utf8,命令行一般是gbk,程序一般时gb2312)。2)确保你的数据库使用utf8格式,所有编码通吃。3)一定要保证connection字符集大于等于client字符集,不然就会信息丢失。比如:latin1 < gb2312 < gbk < utf8;若设置set character_s..原创 2021-09-14 12:10:17 · 166 阅读 · 0 评论 -
MySQL 中 UTF8和UTF8mb4的区别
1、我们先来看一个问题在utf8字符集中插入数据:mysql> insert into `user` values (4,'a楞', 0);ERROR 1366 (HY000): Incorrect string value: '\xE6\xA5\x9E' for column 'name' at row 1可以看到上诉的插入语句执行失败。思考下,这是什么原因导致的?2、UTF8和UTF8mb41)在MySQL 5.5.3之后,增加了UTF8mb4的编码mb4就是most by..原创 2021-09-14 11:28:25 · 294 阅读 · 0 评论 -
MySQL事务介绍及使用
1、什么是事务?在MySQL中,只有使用了InnoDB数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。事务用来管理Insert,update,delete语句。2、事务的特性事务必须满足4个条件(ACID)原子性( Atomicity, 或称不可分割性)一致性( Consistency)隔离性( Isolation, 又称独立性)持久性( Durability) 。2.1 原子性一个事务( transa..原创 2021-03-29 18:56:26 · 187 阅读 · 0 评论 -
MySQL触发器介绍及使用
1、触发器简介触发器是一种特殊的存储过程, 它在插入, 删除或修改特定表中的数据时触发执行, 它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器是基于行触发的, 所以删除、 新增或者修改操作可能都会激活触发器, 不要编写过于复杂的触发器, 也不要增加过得的触发器, 这样会对数据的插入、 修改或者删除带来比较严重的影响, 同时也会带来可移植性差的后果, 所以在设计触发器的时候一定要有所考虑。触发器作用安全性:可以基于数据库的值使用户具有操作数据库的某种权利可以基于时间限制用户的..原创 2021-03-29 17:05:15 · 577 阅读 · 0 评论 -
MySQL存储过程详解及应用
一、存储过程概述SQL 语句需要先编译然后执行, 而存储过程( Stored Procedure) 是一组为了完成特定功能的 SQL 语句集, 经编译后存储在数据库中, 用户通过指定存储过程的名字并给定参数( 如果该存储过程带有参数) 来调用执行它。存储过程是可编程的函数, 在数据库中创建并保存, 可以由 SQL 语句和控制结构组成。 当想要在不同的应用程序或平台上执行相同的函数, 或者封装特定功能时, 存储过程是非常有用的。 数据库中的存储过程可以看做是对编程中面向对象方法的模拟, 它允许控制数据..原创 2021-03-29 16:08:32 · 493 阅读 · 4 评论 -
MySQL常用优化
一、优化概述MySQL的优化方式简要归纳为下面4种方式:1)SQL语句及索引的优化。2)数据库表结构的优化。3)系统配置的优化。4)硬件的优化。二、优化详述2.1 SQL优化1、对查询进行优化,尽量避免全表扫面,首先考虑在where及order by涉及的列上建立索引。2、尽量避免在where子句中使用 != 或 <>操作符,否则将引擎放弃使用索引而进行全表扫描。3、尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。..原创 2021-03-29 10:59:03 · 154 阅读 · 1 评论 -
MySQL常用SQL语句小结
一、SQL基础操作1、创建数据库#创建数据库CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8;#或CREATE SCHEMA 数据库名 DEFAULT CHARACTER SET utf8;2、创建表DROP TABLE IF EXISTS `learn`;CREATE TABLE `learn` ( id INT, course VARCHAR(32), chapters TINYINT, activity VARCHAR(..原创 2021-03-25 15:55:27 · 263 阅读 · 0 评论 -
如何预估一个SQL语句的性能?
一、explain的作用explain 关键字: 使用 explain 关键字可以模拟优化器执行 SQL 查询语句, 从而知道 MySQL是如何处理你的 SQL 语句的, 分析你的查询语句或是表结构的性能瓶颈。二、explain的使用用explain 命令查看 SQL 语句的执行计划, 查看 SQL 语句有没有使用索引, 有没有做全表扫描。-- 实际 SQL, 查找用户名为 allen 的同学select * from mytest3 where id = 1;-- 查看 SQL ..原创 2021-03-25 14:32:59 · 349 阅读 · 0 评论 -
libmysql使用详解
一、环境安装ubuntu环境下需安装:libmysqlclient-dev,安装指令:apt-get install libmysqlclient-dev在/usr/include/mysql/目录下的 mysql.h 是主要的 API 接口头文件。编码时我们需要引用该头文件。二、主要函数1、 MYSQL * mysql_init(MYSQL * mysql)说明:分配或初始化与 mysql_real_connect()相适应的 MYSQL 对象。 如果 mysql 是 NULL指..原创 2021-03-25 13:53:27 · 2765 阅读 · 0 评论 -
MySQL安装及相关配置
一、MySQL安装1、ubuntu MySQL安装 sudo apt-get install mysql-server apt-get install mysql-client sudo apt-get install libmysqlclient-dev安装完成后,可以使用如下命令检查是否安装成功sudo netstat -tap | grep mysql如果看到有mysql的socket处于listen状态,表示安装成功。2、文件默认安装位置/usr/bin 客户..原创 2021-03-25 11:16:07 · 155 阅读 · 0 评论 -
数据库优化整理之:查询分离
一、 引言 系统特点客服系统有一个工单查询功能,工单表特点及用户需求如下:1)工单表中存放了几千万条数据。2)查询工单表数据时需要关联十几个子表,每个子表的数据也是超亿条。3)工单表中的有些数据是几年前的,客户需要这些数据继续保持更新。 问题描述每次客户查询数据时几十秒甚至更长的时间才能返回结果。 解决方案方式1:使用索引、SQL等数据库优化技巧来进行解决,但是由于数据量庞大,关联的子表较多,优化效果并不明显。方式2:使用冷热分离,但是第3)条的客户需求限制,直接pass该方案。原创 2021-01-14 14:39:35 · 1108 阅读 · 2 评论 -
数据库优化整理之:冷热分离
一、 引言工作中,随着数据库表数据量的增大,我们会发现,对表数据的读写操作会变得越来越慢,有时候查询一条数据会耗费几十秒或几分钟才查出结果,甚至多点击几次查询还会出现宕机。这个时候,我们可能首先会想到通过对表结构、业务代码、索引、SQL语句等方面进行优化,以此来提高读写操作响应速度。然而,对于表数据量相对较大的情况,我们发现优化效果有限,并未达到预期效果。此时,我们可以考虑是否可以通冷热分离来提升读写、查询效率。 二、 什么是冷热分离?为了更好的理解冷热分离的概念,我们先了解下什么时候热数据原创 2021-01-13 10:52:43 · 11154 阅读 · 2 评论 -
MySQL查看、设置、修改存储引擎方法
一、设置整个数据库的默认存储引擎两种应用场景场景1:设置数据库的持久默认存储引擎在启动配置文件中设置服务器存储引擎[mysqld]default-storage-engine=<存储引擎名>示例1)我系统MySQL数据库版本为:5.7.32修改文件: sudo vi mysqld.cnf ,增加default-storage-engine=MyISAM,5.7.32版本文件路径为:/etc/mysql/mysql.conf.d2)修改后重启MySQL: sudo /etc原创 2020-12-02 17:20:15 · 2776 阅读 · 0 评论 -
MySQL存储引擎MyISAM和InnoDB详谈
一、概述MySQL数据库支持多种存储引擎,包括MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等。我们可以通过show engines指令查看自己系统安装的MySQL对引擎种类的支持:还可以通过show variables like '%storage_engine%'指令查看MySQL默认使用的存储引擎,从下图看到我系统上MySQL默认存储引擎为InnoDB。我的My原创 2020-12-02 15:49:52 · 219 阅读 · 0 评论 -
MySQL为何选择B+树作为索引结构
一、概述MySQL有多种存储引擎,每种引擎都有自己的特点,实际应用中我们可以根据自己的需要选择。常用的存储引擎有MyISAM、InnoDB等,其中MyISAM是MySQL数据库自带引擎,InnoDB是其他公司以插件的形式嵌入MySQL。我们知道,MySQL数据存储在磁盘,磁盘IO会成为最大的性能瓶颈,因此设计的目标应该是尽量减少IO访问次数;而IO次数的操作跟树的高度成正比,树的高度越高,每次执行增删改查的IO操作次数越多,因此我们在选择、设计的时候需要树高将作为一个重要参考项。本文通过对几种树形结构原创 2020-12-01 18:19:52 · 266 阅读 · 0 评论 -
MySQL集群方案及实现设计
一、概述MySQL的集群方案有多种,按照实现途径可以分为MySQL官方和第三方。1)官方实现方式包括:主从方式、一主多从方式、cluster集群方式等。2)第三方实现方式包括:MMM(双主多从)方式、MHA(多主多从)方式、Galera Cluster(多主结构)方式等。二、MySQL官方实现1. 主从方式-MySQL Replication…原理写在master,读在slave。通过重放binlog实现主库数据的异步复制。即当主库执行了一条 sql 命令,那么在从库同样的执行一遍,从原创 2020-11-30 20:09:47 · 2282 阅读 · 1 评论 -
MySQL连接池原理及设计
一、什么是数据库连接池?官方:数据库连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请、使用、释放。白话:创建数据库连接是一个很耗时的操作,也容易对数据造成安全隐患。所以在程序初始化的时候,集中创建多个数据库连接,并把它们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。二、为什么需要数据库连接池?》》先来看两张图的比较-> 不使用连接池情景下,执行一条SQL语句需要的网络交互每次执行一条SQL语句的网络交互有:原创 2020-11-29 23:11:03 · 1549 阅读 · 0 评论 -
MySQL事务知识点整理
一、 事务事务是MySQL执行的最小单元。事务四大特征:原子性(atomicity或称不可分割性)、一致性、隔离性(又称独立性)、持久性。问:如果一张表user(money),同时执行两个操作,一个money-100 ,一个money+100,开始一个事务,事务的执行如何保证原子性?答:引入临时表undolog,每个事务都有一个undolog,中间数据存储在undolog,把-100,+100两个操作都写到这个表里,一起锁起来,再把这个结果一起写到原表中。二、 索引MySQL使用B+树做索引。原创 2020-11-29 21:30:57 · 156 阅读 · 0 评论 -
MySQL语句执行过程
一、执行过程一句话概述查询语句:权限校验–>缓存查询–>分析器–>优化器–>执行器–>权限校验–>执行器–>引擎。更新语句:分析器–>权限校验–>执行器–>引擎–>redolog prepare–>binlog–>redolog commit。二、执行过程详解MySQL主要分为2部分:server层和存储引擎层。server层:包括连接器、查询缓存、分析器、优化器、执行器,所有跨存储引擎的功能都在这一层实现,原创 2020-11-29 20:02:13 · 517 阅读 · 1 评论