mysql
qq_489366879
这个作者很懒,什么都没留下…
展开
-
MySQL的四种事务隔离级别
一、事务的并发问题 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。 3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。 小结:不可重复读的和原创 2022-04-18 10:55:18 · 84 阅读 · 0 评论 -
MYSQL-InnoDB 锁机制
InnoDB锁模式InnoDB实现了两种类型的行锁。共享锁(S):允许一个事务去读一行,阻止其他事务获得相同的数据集的排他锁。排他锁(X):允许获得排他锁的事务更新数据,但是组织其他事务获得相同数据集的共享锁和排他锁。可以这么理解:共享锁就是我读的时候,你可以读,但是不能写。排他锁就是我写的时候,你不能读也不能写。其实就是MyISAM的读锁和写锁,但原创 2017-08-25 13:21:13 · 213 阅读 · 0 评论 -
MySQL复制中 slave延迟监控
在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该考虑更多因素。首先,我们先看下SLAVE的状态:> show slave status\G*************************** 1. row ***************************S原创 2017-08-23 14:33:43 · 263 阅读 · 0 评论 -
MySQL下bin-log的三种模式(ROW、Statement、Mixed)
MySQL的bin-log日志备份有三种模式,分别是:ROW、Statement、Mixed一、Row基于行的复制(row-based replication,RBR)日志中会记录成每一行数据被修改成的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况。优点:在row模式下,bin-log中可以不记录执行的sql语句的上下原创 2017-08-23 15:30:08 · 2871 阅读 · 2 评论 -
MySQL-slave延迟很大优化方法
一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发。简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master。ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 s原创 2017-08-23 15:52:17 · 456 阅读 · 0 评论 -
MySQL是如何利用索引的
一、前言在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑。譬如:MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件?MySQL 在LIKE进行模糊匹配的时候又是如何利用索引的呢?MySQL 到底在怎么样的情况下能够利用索引进行排序?今天,我将会用一个模型,把这些问题都一一解答,让你对MySQ转载 2017-08-23 17:17:34 · 302 阅读 · 0 评论 -
MYSQL-explain
explain来了解SQL执行的状态explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了;EXPLAIN列的解释table显示这一行的数据是关于哪张表的type这是重要的列,显示连接使用了何种类型。原创 2017-08-24 10:49:06 · 187 阅读 · 0 评论 -
MYSQL-show processlist
SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。各列的含义和用途:ID列一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询 /*/mysqladmin kill 进程号。user列显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。host列原创 2017-08-24 10:43:00 · 185 阅读 · 0 评论 -
MYSQL-SHOW VARIABLES 详解
1. back_log指定MySQL可能的连接数量。当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大原创 2017-08-24 11:19:11 · 881 阅读 · 0 评论 -
MySQL 慢查询分析 mysqldumpslow
MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情况下的瓶颈和问题都需要通过观察MySQL的运行情况来进行分析,《查看MySQL运行状况》这篇文章罗列了一些常用的查看MySQL运行信息的方式。而对于大多数的程序员来说,最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询,所以这里主要给大家介绍如何利用官方的mysqldumpslow工具方便的查看这些信息。转载 2017-11-17 11:29:03 · 315 阅读 · 0 评论 -
使用 mysql 悲观锁 解决并发问题
悲观锁介绍(百科):悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。使用场景举例:以MySQL InnoDB为例...转载 2018-10-22 09:57:54 · 373 阅读 · 0 评论 -
mysql 悲观锁、共享锁、排它锁、行锁
悲观锁与乐观锁相对应的就是悲观锁了。悲观锁就是在操作数据时,认为此操作会出现数据冲突,所以在进行每次操作时都要通过获取锁才能进行对相同数据的操作,这点跟java中的synchronized很相似,所以悲观锁需要耗费较多的时间。另外与乐观锁相对应的,悲观锁是由数据库自己实现了的,要用的时候,我们直接调用数据库的相关语句就可以了。说到这里,由悲观锁涉及到的另外两个锁概念就出来了,它们就是共享锁...转载 2018-10-22 10:27:16 · 107 阅读 · 0 评论 -
mysql-proxy实现读写分离
环境描述:操作系统:CentOS6.5 32位主服务器Master:192.168.179.146从服务器Slave:192.168.179.147调度服务器MySQL-Proxy:192.168.179.142二、mysql-proxy实现读写分离1、安装mysql-proxy实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装原创 2017-08-18 14:36:21 · 244 阅读 · 0 评论 -
mysql 视图
什么是视图通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图的特性视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟基本表一样,进行增删改查操作(ps:增删改操作有条件限制);视图的作用方便原创 2017-06-06 00:00:11 · 295 阅读 · 0 评论 -
深入解析MySQL分区(Partition)功能
mysql> explain select count(*) from part_tab where c3 > date '1995-01-01' and c3 自5.1开始对分区(Partition)有支持= 水平分区(根据列属性按行分)=举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。=== 水平分区的几种模式:===转载 2017-04-26 22:30:27 · 227 阅读 · 0 评论 -
mysql 常见分表方案
一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1、接收到sql; 2、把sql放到排队队列中;3、执行sql; 4、返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排队等待原创 2017-04-26 23:23:22 · 297 阅读 · 0 评论 -
mysql MERGE 优缺点
MERGE表的优点:1.简单管理日志表,比如你可以把不同的月份的数据放在不同的表上,使用myisampacl压缩。然后创建MERGE来使用它们。2.获取更快的速度。你可以根据一些关键点拆分大的只读表,然后分开的多个表中,并且位于不同的磁盘。MERGE表结构可以比使用单个大表速度更快。3.执行查询更加高效。如果你准确的知道你要获取什么,你可以在底层表执行查询,然后多其他表使用merge。原创 2017-04-26 23:44:37 · 947 阅读 · 0 评论 -
MEMORY 存储引擎
MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中。这些特性与前面的两个很不同。每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎原创 2017-04-27 00:09:05 · 766 阅读 · 0 评论 -
数据库SQL优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论原创 2017-04-27 02:39:00 · 422 阅读 · 0 评论 -
MySQL索引 B+树结构
B+树在数据库中的应用1.文件很大,不可能全部存储在内存中,故要存储到磁盘上2.索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数(为什么使用B-/+Tree,还跟磁盘存取原理有关。)3.局部性原理与磁盘预读,预读的长度一般为页(page)的整倍数,(在许多操作系统中,页得大小通常为4k)4.数据库系统巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,原创 2017-04-27 00:44:50 · 265 阅读 · 0 评论 -
MySQL Cluster
概述MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%。MySQL Cluster允许在无共享的系统中部署“内存中”数据库集群,通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘原创 2017-04-27 03:17:23 · 226 阅读 · 0 评论 -
mysql主从,主主备份原理及实践
双机热备双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到另一个。 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地热备,尤其适合灾备。一, mysql 备份工作原理原创 2017-06-04 21:26:08 · 449 阅读 · 0 评论 -
mysqldump 数据库进行定时备份
一个星期备份一次脚本#!/bin/bash#设置mysql备份目录folder = /home/mysql/mysqldumpcd $folderday =`date +%Y%m%d`rm -rf $daymkdir $daycd $day#数据库服务器,一般为localhosthost = localhost#用户名user = root#密码password =原创 2017-06-05 22:51:20 · 704 阅读 · 0 评论 -
查找删除mysql数据表中重复记录
mysql数据库中的数据越来越多,当然排除不了重复的数据,在维护数据的时候突然想到要把多余的数据给删减掉,剩下有价值的数据。一. 方法 1以下sql语句可以实现查找出一个表中的所有重复的记录.select user_name,count(*) as count from user_table group by user_name having count>1;参数说原创 2017-06-05 23:35:03 · 363 阅读 · 0 评论