MySQL
文章平均质量分 82
stevsun
Keep calm and carry on
展开
-
基于MySQL实现的分布式锁
概述在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就立即对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。但是到了分布式系统的时代,这种线程...转载 2020-03-17 16:33:09 · 13789 阅读 · 4 评论 -
MySQL主从同步延迟原理及解决方案
概述MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢?MySQL...转载 2020-03-12 17:56:11 · 336 阅读 · 0 评论 -
MySQL主从复制详解
为什么需要主从复制?1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。2、做数据的热备3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性...转载 2020-03-12 16:03:21 · 445 阅读 · 0 评论 -
MySQL InnoDB事务隔离级别和锁机制
文章目录1.基础知识1.索引1.聚集索引2.辅助索引2.锁机制1.记录锁2.范围锁3.多粒度锁3.并发控制协议1.MVCC2.LBCC4.并发问题1.脏读2.不可重复读3.幻读2.事务隔离级别1.read uncommitted2.read committed3.repeatable read4.seraliable3.SQL加锁分析1.id列是主键,RC隔离级别2.id列是辅助唯一索引,RC隔离...转载 2020-02-26 17:24:29 · 564 阅读 · 1 评论 -
MySQL视图的作用
MySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,MySQL视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限...转载 2020-02-05 18:10:01 · 308 阅读 · 0 评论 -
MySQL视图
视图概述视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。视图的概念视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据...转载 2020-02-05 18:02:13 · 124 阅读 · 0 评论 -
MySQL中Innodb的聚簇索引和非聚簇索引
聚簇索引数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中,中间的节点页保存指向下一层页面的指针。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储。一个表只能有一个聚簇索引,因为在一个表中数据的存放方式只有一种。一般来说,将通过主键作为聚簇索引...转载 2020-02-05 17:13:04 · 541 阅读 · 0 评论 -
MySQL使用给定顺序进行in查询
使用find_in_set函数mysql> select id from tabelName where id in (757,732,749,696,744,596,474);+--------+| id |+--------+| 474 || 596 || 696 || 732 || 744 || 749 || 757 |+原创 2016-05-27 15:19:41 · 690 阅读 · 0 评论 -
MySQL查看表基本信息
1.查看数据库表基本信息。 select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA = '数据库名' and information_schema.TABLES.TABLE_NAME = '表名';2.查看MySQL数据库大小 SELECT sum(DATA_LENGTH)+sum(IN转载 2016-09-22 19:22:06 · 4009 阅读 · 0 评论 -
MySQL数据库每天备份脚本
/usr/bin为mysql安装目录 建备份文件夹: mkdir mysql_data_bak 建脚本文件: touch autobackupmysql.sh 打开文件 vi autobackupmysql.sh 在脚本中加入如下内容: filename=`date +%Y%m%d` /usr/bin/mysqldump -opt mysql -u root -proot|g原创 2016-04-14 16:17:04 · 499 阅读 · 0 评论 -
MySQL 主从复制与读写分离概念及架构分析
1.MySQL主从复制入门首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复转载 2016-02-21 23:24:05 · 423 阅读 · 0 评论 -
MySQL修改默认编码
首先进入MySQL查看当前默认编码:mysql> SHOW VARIABLES LIKE 'character%';+--------------------------+----------------------------+| Variable_name | Value |+-------------------------原创 2016-03-30 17:33:03 · 428 阅读 · 0 评论 -
Innodb中的事务隔离级别和锁的关系
前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。#一转载 2016-02-19 19:57:24 · 525 阅读 · 0 评论 -
MySQL中一致性非锁定读
一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过多版本控制(multi versionning)的方式来读取当前执行时间数据库中行的数据,如果读取的行正在执行DELETE或UPDATE操作,这是读取操作不会因此等待行上锁的释放。相反的,InnoDB会去读取行的一个快照数据 上面展示了InnoDB存储引擎一致性的非锁定读。之所以称为非锁定读,因为转载 2016-02-19 19:52:15 · 534 阅读 · 0 评论 -
MySQL快速删除所有表
删除表的命令:drop table 表名;如果有200张表,执行200次,想想就不想动手了。 下面提供一个使用information_schema库的方案:SELECT CONCAT('drop table ',table_name,';') FROM information_schema.`TABLES` WHERE table_schema='数据库名';通过这条命令来得到drop table原创 2016-06-08 15:51:25 · 2834 阅读 · 0 评论 -
MySQL创建账户及授权
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION;mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';原创 2016-07-29 19:04:39 · 472 阅读 · 0 评论 -
MySQL 支持 emoji 图标存储
让MySQL支持emoji图标存储在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:��、��、��很容易更新活着插入不成功,导致报错。Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column转载 2016-09-10 17:55:20 · 6109 阅读 · 1 评论 -
MySQL脏读、不可重复读、幻读(虚读)
事务的特性:原子性:指处于同一个事务中的多条语句是不可分割的。一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如转账,转账前两个账户余额之和为2k,转账之后也应该是2K。隔离性:指多线程环境下,一个线程中的事务不能被其他线程中的事务打扰持久性:事务一旦提交,就应该被永久保存起来。事务隔离性问题: 如果不考虑事务的隔离性,会出现以下问题:脏读:指一个线程中的事务读取到原创 2016-12-02 18:00:58 · 24166 阅读 · 7 评论 -
MySQL的information_schema的介绍
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。information_schema数据库是MySQL自带的,它提供了访问数据库元转载 2016-11-28 15:16:57 · 584 阅读 · 0 评论 -
MySQL查看表占用空间大小
//先进去MySQL自带管理库:information_schema //自己的数据库:dbwww58com_kuchecarlib //自己的表:t_carmodelparamvalue mysql> use information_schema; Database changed mysql> select data_length,index_length ->转载 2016-11-28 15:30:10 · 364 阅读 · 0 评论 -
MySQL自定义排序
order by fieldselect * from table where id in (2,3,4,1,5) order by field(id,2,3,4,1,5);select * from table where id in (2,3,4,1,5) order by field(id,2,3,4,1,5) asc;select * from table where name in (原创 2017-02-16 18:01:46 · 475 阅读 · 0 评论 -
MySQL的InnoDB索引原理详解
摘要本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出。各种树形结...转载 2019-04-01 15:32:05 · 257 阅读 · 0 评论 -
MySQL查看sql语句运行时间
一,show profiles 之类的语句来查看 1,查一下profile是不是打开了,默认是不打开的。mysql> show profiles; Empty set (0.02 sec) mysql> show variables like "%pro%"; +---------------------------+-------+ | Variable_name | Value |转载 2015-09-11 10:36:41 · 3194 阅读 · 0 评论 -
Innodb事务隔离级别
一、事务隔离级别ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)。对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在:1、脏读(dirty read):一个事务可转载 2016-02-19 19:49:02 · 337 阅读 · 0 评论 -
InnoDB的多版本一致性读的实现
InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非常快,原创 2016-02-19 19:44:37 · 1348 阅读 · 1 评论 -
MySQL主从搭建
主从服务器是mysql实时数据同步备份的一个非常好的方案了,现在各大中小型网都都会使用mysql数据库主从服务器功能来对网站数据库进行异步备份了,下面我们来给大家介绍主从服务器配置步骤。 Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。 (1)首先确保主从服务器上的Mysql版本相同 (2)在主服务器上,设置原创 2016-02-19 11:21:45 · 419 阅读 · 0 评论 -
MySQL性能分析工具profile的使用(2)
SHOW PROFILE和SHOW PROFILES命令可以用来分析当前会话中语句执行的资源消耗情况。其是否启用是根据会话级的变量profiling,默认是关闭的。 开启与关闭 mysql> SET profiling=1;或 SET profiling=on; 默认即是关闭状态。开启后关闭可以如下: mysql> SET profiling=0;或 SET profiling=on; 用转载 2015-09-11 11:17:32 · 1725 阅读 · 0 评论 -
MySQL联合索引实例
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。 两个或更多个列上的索引被称作复合索引。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具转载 2015-09-11 15:03:24 · 749 阅读 · 0 评论 -
mysql 性能分析及explain分析
环境准备MySQL版本: 创建测试表CREATE TABLE people( id bigint auto_increment primary key, zipcode char(32) not null default '', address varchar(128) not null default '', lastname char(64) not nu转载 2015-09-11 14:03:55 · 870 阅读 · 0 评论 -
MySQL性能分析工具profile的使用(1)
这篇文章主要介绍了MySQL性能分析工具profile使用教程,本文描述了如何使用MySQL profile,不涉及具体的样例分析,需要的朋友可以参考下。 分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。对于全局级别则作用于整个MySQL实例,而session级别紧影响当前sess转载 2015-09-11 11:11:40 · 492 阅读 · 0 评论 -
MySql性能优化之分析命令
一 当发现程序运行比较慢的时候,首先排除物力资源问题之后,就将注意力转向mysq数据库: 1、首先确定运行慢的sql语句: mysql> show full processlist; 2、确认低效的查询: 多次执行第一步发现time耗费大的sql语句。查看耗费的时间。 3、为sql生成一个执行计划query Execution plan(QEP) mysql> explain sele转载 2015-09-10 20:34:56 · 523 阅读 · 0 评论 -
mysql 性能分析及explain用法
1 使用explain语句去查看分析结果,如 explain select * from test1 where id=1; 会出现: id selecttype table type possible_keys key key_len ref rows extra各列其中, type=const表示通过索引一次就找到了, key=primary的话,表示使用了主键 t转载 2015-09-10 10:10:31 · 322 阅读 · 0 评论 -
linux下常用mysql命令(3)
1、删除student_course数据库中的students数据表: rm -f student_course/students.*2、备份数据库:(将数据库test备份) mysqldump -u root -p test>c:\test.txt 备份表格:(备份test数据库下的mytable表格) mysqldump -u root -p test mytable>c:\test.t原创 2015-09-01 10:14:02 · 406 阅读 · 0 评论 -
linux下常用mysql命令(2)
一、连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>。 2、例2:连接到远程主机上的M原创 2015-09-01 10:13:04 · 423 阅读 · 0 评论 -
linux下常用mysql命令(1)
一、mysql数据库管理操作 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭mysql的命令:原创 2015-09-01 10:10:17 · 404 阅读 · 0 评论 -
Mysql慢查询日志
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考。本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步。 1.mysql慢查询日志 打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加转载 2015-09-11 14:17:12 · 439 阅读 · 0 评论 -
MySQL使用mysqldump导出数据
mysql mysqldump只导出表结构或只导出数据的实现方法备份数据库:#mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据mysqldump --opt -d 数据库名 -u root -p >原创 2015-09-15 11:24:26 · 538 阅读 · 0 评论 -
MySQL的分层数据管理与无限级分类
最近做个一基于SQL的无限级分类的目录模块,在网上看到了这个文章,非常不错. 原文是:http://wenku.baidu.com/view/53c68dd049649b6648d74746.html在看下面的无限级分类优化之前,请大家先看看原文先哈! 1.文章里介绍了常见的基于parent_id的邻接表模型: CREATE TABLE category( category转载 2015-09-22 20:23:48 · 903 阅读 · 2 评论 -
MySQL主从复制配置
1、主从服务器分别作以下操作:1.1、版本一致1.2、初始化表,并在后台启动mysql1.3、修改root的密码2、修改主服务器master:#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段3、修改从服务器slav转载 2016-03-17 12:20:09 · 377 阅读 · 0 评论 -
MySQL安装初始化账户密码
MySQL登录的命令是mysql, mysql 的使用语法如下: mysql [-u username] [-h host] [-p[password]] [dbname] username 与 password 分别是 MySQL用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是 root,由于初始没有密码,第一次进时只原创 2016-03-16 16:37:58 · 18106 阅读 · 1 评论