数据库系列:mysql innodb锁机制介绍-编程思维
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库系列:使用高区分度索引列提升性能 数据库系列:前缀索引和索引长度的取舍 数据库系列:MySQL引擎MyISAM和InnoDB的比较 数据库系列:InnoDB下实现高并发控制 数据库系列:事务的4种
morethink program
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库系列:使用高区分度索引列提升性能 数据库系列:前缀索引和索引长度的取舍 数据库系列:MySQL引擎MyISAM和InnoDB的比较 数据库系列:InnoDB下实现高并发控制 数据库系列:事务的4种
1、出现问题 查询数据时报如题错误 2、解决方案 建表时需指定字符集,例如: -- ---------------------------- -- Table structure for testTable -- ---------------------------- CREATE TABLE testTable( Id BIGINT(
发生场景 在查询学生表的时候,需要支持根据创建时间来筛选出某段时间内入学的学生总数,因此在创建时间上加了索引,但是最终发现还是会走全量查询。 实验过程 1 2 3 4 5 6 7 CREATE TABLE `t_user` ( `id` bigint(11) unsigned NOT NULL COMMENT '学生id', `name` varchar(24) N
前言 之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景,记录一下。 背景说明 分布式事务消息表:业务上使用消息表的方式,依赖本地事务,实现了一套分布式事务方案 消息表名:mq_messages 数据量:3000多万 索引:create_time 和 status status:有两个值,1 和 2, 其中99%以上的状态都是2,表示分布式事务全部已经执行完成,可以删除。 消息表处理逻
1、需求概述 每天00:00备份MySQL数据库数据; 每一个库生成一个文件,使用gzip压缩,文件名:backup_库名_yyyymmdd.sql.gz,注意yyyymmdd需要是前一天; 备份文件保存在/backup/mysql/下面,每天创建新的日备份数据目录yyyymmdd,注意是前一天 日志保存在/backup/mysql/下面,命名方式为:yyyymmdd.log 2、环
1、概述 PreparedStatement 接口继承了 Statement,并与之在两方面有所不同,它表示预编译的 SQL 语句对象。 首先,数据库会对预编译语句提供性能优化。因为预编译语句有可能被重复调用,所以语句被数据库编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。这并不是说只有一个 Connec
一、错误发生及原因猜测 1、错误发生 在删除 t_user 表的一条数据时,Navicat 发生长时间的无响应,然后弹出一个对话框,提示:ERROR 1205: Lock wait timeout exceeded; try restarting transaction 关闭对话框之后,数据并没有被删除。 2、原因猜测 根据错误信息可以知道,是因为锁等待超时导致的错误。那么
mysql数据库在安装之后,有一些内置的库(test库)、用户(如[email protected])是不需要的,而且在Linux系统上,yum安装的mysql是默认无root密码的,这些都给数据库服务器的安全带来了隐患。这篇文章就是介绍如何进行初始优化,把这些隐患消除掉,以及在root用户被禁止远程登陆的情况下创建普通用户用于局域网管理。 我们的操作环境是64位windo
目录 事务的四大特性? 数据库的三大范式 事务隔离级别有哪些? 生产环境数据库一般用的什么隔离级别呢? 编码和字符集的关系 utf8和utf8mb4的区别 什么是索引? 索引的优缺点? 索引的作用? 什么情况下需要建索引? 什么情况下不建索引? 索引的数据结构 Hash索引和B+树索引的区别? 为什么B+树比B树更适合实现数据库索引? 索引有什么分类? 什么是最左匹配原则? 什么是聚集索引?
在实际工作中,我们经常需要将数据库中的数据导出到Excel表格中进行进一步的分析和处理。Python中的pymysql和xlsxwriter库提供了很好的解决方案,使得这一过程变得简单而高效。 建立数据库连接 首先,我们需要使用pymysql库来建立与MySQL数据库的连接,并指定要连接的数据库名称、用户名和密码。 import pymysql connection = pymysql.co
本文可以结合 MySQL中的事务原理和锁机制 查看。 首先简单了解一下 mysql 的 sql 类型: 1、数据定义语言 DDL:Create、Drop、Alter 操作。用于定义库和表结构的。 2、数据查询语言 DQL:select。用于查询数据的。 3、数据操纵语言 DML:insert、update、delete。对行记录进行增删改操作。 4、数据控制语言 DCL:grant、revoke
如果你熟悉 MySQL 缓冲池(不熟悉可以查看 一条 sql 的执行过程详解),可能会觉得是因为删除操作只更新到缓冲池和 redo log,并没有进行 flush 落盘,但如果关闭数据库,触发 flush ,会发现表文件大小还是不会改变,这是为什么? 原因 首先要了解数据的存储方式,存储方式共有两种,是由参数 innodb_file_per_table 来控制的。 off:共享表结构,表示所有的
在编写SQL 语句时常常会用到 order by 进行排序,那么排序过程是什么样的?为什么有些排序执行比较快,有些排序执行很慢?又该如何去优化? 索引排序 索引排序指的是在通过索引查询时就完成了排序,从而不需要再单独进行排序,效率高。索引排序是通过联合索引实现的。因为联合索引是从最左边的列开始起按大小顺序进行排序,如下图。 比如现在查询条件是 where sex=1 order by name
几种获取记录数的方法 count(*): MySQL 优化过,扫描的行数小于总记录数。执行效率高。 count(1): 遍历所有记录,不取值,对每行尝试添加一个 “1” 列,如果不为 null,就计入累加(引擎层)。 count(主键): 遍历所有记录,并把每个记录的 id 取出返回 Server 层判断,将不为 null 的计入累加。 count(字段): 遍历所有记录,并把每个记录的
本文主要概括的是 WAL 机制涉及的三种日志,具体与其他组件的联系、执行可查看 一条 sql 的执行过程详解 、MySQL中的事务原理和锁机制 。 是什么 WAL,全称是Write-Ahead Logging, 预写日志系统。指的是 MySQL 的写操作并不是立刻更新到磁盘上,而是先记录在日志上,然后在合适的时间再更新到磁盘上。这样的好处是错开高峰期。日志主要分为 undo log、redo l
随着项目架构的不断扩大,单台 MySQL 已经不能满足需要了,所以需要搭建集群将前来的请求进行分流处理。博客主要根据丁奇老师的专栏<<MySQL实战45讲>>学习的总结。 架构 MySQL的集群和 Redis 集群类似,都是默认为master 库,可以设置为从库,主库负责处理写请求,从库处理读请求。一般将从库设置为 read-only,也就是将这个参数设为 true。这样