MySQL
文章平均质量分 69
MySQL开发
李维山
后端架构师
展开
-
【MySQL实战07】数据备份
MySQL数据库备份形式分为物理备份和逻辑备份。原创 2023-02-23 17:30:39 · 422 阅读 · 2 评论 -
【MySQL实战08】误删数据恢复
恢复数据前提条件:在MySQL配置文件my.cnf查看binlog是否开启:show variables like 'log_%';查看binlog保存位置:show variables like '%datadir%';查看当前正在使用的binlog:show master status;。原创 2023-02-24 15:47:49 · 483 阅读 · 0 评论 -
【MySQL实战06】MySQL配置半同步主从复制、读写分离(TP6)
MySQL复制默认是异步复制,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,但并不知道Slave是否或何时已经接收且已处理,因此存在一定的概率备库与主库的数据是不对等的。在异步复制的机制的情况下,如果Master宕机,事务在Master上已提交,但很可能这些事务没有传到任何的Slave上。假设有Master->Salve故障转移的机制,此时Slave也可能会丢失事务。原创 2023-02-21 14:45:31 · 603 阅读 · 2 评论 -
Mac下brew安装MySQL5.7 设置默认密码
【代码】Mac下brew安装MySQL5.7 设置默认密码。原创 2023-02-14 11:23:06 · 1218 阅读 · 0 评论 -
【MySQL实战05】锁
MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。数据库锁设计的初衷是处理并发问题。全局锁命令:Flush tables with read lock (FTWRL),使整个库处于只读状态,可以在客户端断开的时候自动释放。使用场景:全库逻辑备份。官方自带的备份工具 mysqldump,使用参数–single-transaction 时,导数据之前会启动一个事务,来确保拿到一致性视图,但只适用于所有的表都使用事务引擎的库,对于 MyISAM 这种不支持事务的引擎,如果备份过程中有更新,原创 2022-04-12 18:37:40 · 1236 阅读 · 1 评论 -
【MySQL实战04】索引
三种常见的数据结构:哈希表、有序数组、搜索树。哈希表:以键 - 值(key-value)存储数据,不适合范围查询,适用于只有等值查询的场景。 有序数组:递增顺序保存,支持范围查询,但只适用于静态存储引擎。 搜索树:二叉树搜索效率最高,实际需要根据数据块的大小使用“N 叉”树,减少磁盘访问次数。每一个数据库,底层存储核心都是基于数据模型,不同数据结构的数据库的拥有不同的适用场景。InnoDB 的索引模型B+ 树结构,每一个索引在 InnoDB 里面对应一棵 B+ 树。例如,一张表的..原创 2022-04-11 15:53:12 · 647 阅读 · 0 评论 -
【MySQL实战03】事务隔离
1、事务的特性:原子性、一致性、隔离性、持久性。2、事务间同时执行可能会出现的问题:脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)3、事务隔离级别:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)、串行化(serializable )。读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 读提交是指,一个事务提交之后,它做的变更才会被原创 2022-04-11 12:16:14 · 232 阅读 · 0 评论 -
【MySQL实战02】redo log和binlog
MySQL的更新操作涉及到两个重要的日志模块,redo log(重做日志)和 binlog(归档日志)。1、redo log(重做日志)InnoDB 引擎特有的日志模块,可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。i原创 2022-04-11 11:52:28 · 1017 阅读 · 0 评论 -
【MySQL实战01】 一条SQL查询语句是如何执行的
MySQL 可以分为 Server 层、存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。 .原创 2022-04-11 10:49:35 · 700 阅读 · 0 评论 -
SSH本地连接远程MySQL数据库
场景: 现有一台MySQL-rds服务,地址:lws.rds.com:3306,用户名:lws,密码:123456,数据库:user。 现要在本地连接该服务,对数据进行处理,然而本地ip无法访问远程数据库。 已知有一台服务器A可以连接该数据库服务,ip:8.123.456.7,用户名:root,密码:654321,如何通过这台服务器的ssh隧道连接远程数据库服务。实现: 使用ssh命令将远程数据库服务端口 通过ssh隧道 绑定到本地任意空闲端口,如...原创 2021-11-03 15:17:38 · 1225 阅读 · 1 评论 -
MySQL索引优化建议
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 尽量使用唯一索引,对于有唯一值的列索引效果最好 索引长度尽量短,这样做有几个好处,首先短的索引可以节省索引空间,也会使查找的速度得到提升。 太长的列,可以选择只建立部分索引 更新非常频繁的数据不适宜建索引 利用最左前缀原则,比如建立了一个联合索引(a,b,c),那么其实我们可利用的索引就有(a), (a,b), (a,b,c) 不要过多创建..原创 2021-02-25 15:37:43 · 228 阅读 · 0 评论 -
图文详解MySQL的共享锁和排它锁
共享锁又称为读锁,简称S锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改加共享锁可以使用select ... lock in share mode语句我们有如下测试数据:现在我们对id=1的数据行共享锁查询,这里会使用begin开启事务,而不关闭事务,这样做是用来测试,因为提交事务或回滚事务就会释放锁。共享锁sql分析实例打开一个查询窗口BEGIN;SELECT * FROM area WHERE id=1 LOCK IN S原创 2021-02-25 15:29:04 · 943 阅读 · 0 评论 -
Mysql存储引擎MYISAM和INNODB选择
innodb与myisam的异同点myIsam和innodb底层都是采用B+Tree这种数据结构来实现 B-Tree索引 InnoDB支持事务,MyISAM不支持 InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高 MyISAM是非聚集索引,数据文件和索引文件是分离的,索引保存的是数据文件的指针 InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需原创 2021-02-25 15:25:04 · 166 阅读 · 0 评论 -
【MySQL】使用FIND_IN_SET函数避免in查询默认排序
MySQL中使用in查询时,数据结果集会自动排序,比如in查询5个用户id,分别为2,3,1,5,4,查询出来的顺序却为1,2,3,4,5,这样有时候会造成一些数据混淆,可以使用FIND_IN_SET函数避免in查询默认排序,sql语句如下:$uidStr = '2,3,1,5,4';$sql = SELECT * FROM `user` ORDER BY FIND_IN_SE...原创 2019-12-14 22:03:36 · 624 阅读 · 1 评论 -
【LAMP】源码包搭建LAMP环境 (二) 安装MySQL
搭建LAMP准备工作、Apache的安装,请见上一篇:【LAMP】源码包搭建LAMP环境 (一) 安装Apache【安装MySQL】将解压的MySQL安装包移动到/usr/local/下面,并重命名为mysqlmv /usr/local/src/mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql进入mysql文件夹cd ...原创 2018-07-10 11:55:52 · 1263 阅读 · 0 评论 -
QQ昵称字段 特殊字符的数据库存储
遇到像我这样有特殊字符的QQ昵称,存数据库的时候也是心累......设置字符集:utf8mb4 排序规则:utf8mb4_general_ci 存储和读取的时候使用base64位加密、解密字符串:加密:base64_encode()解密:base64_decode()...原创 2018-11-28 09:38:00 · 1651 阅读 · 0 评论 -
mysql命令行导入sql文件
source /home/liweishan/video.sql原创 2019-01-14 18:05:46 · 888 阅读 · 0 评论 -
Mysql设置创建、更新记录时间字段
创建:CreateTime 类型:datetime 默认:CURRENT_TIMESTAMP更新:UpdateTime 类型:timestamp 默认:CURRENT_TIMESTAMP如图:效果:原创 2019-06-01 21:49:51 · 659 阅读 · 0 评论 -
Mysql更新字段拼接字符串
UPDATE music SET url=CONCAT('/',url);原创 2019-06-01 21:56:45 · 7128 阅读 · 0 评论 -
ThinkPHP3.2.3:Memcache缓存的使用方法总结
方法一:原生Memcache的写法public function test1() { $mc = new Memcache(); //创建Memcache对象 $mc->connect("127.0.0.1", 11211); //连接Memcached服务器 $mc->set('test1','hello world',0,10); //存储数据 ec...原创 2018-07-13 00:10:32 · 2527 阅读 · 0 评论