mysql
希望之光芒
风一样的速度,风一样的自由
展开
-
MySQL优化常见Extra分析——慢查询优化
type对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。常用的类型有:ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行index: Full Index Scan,index与ALL区别为index类型只遍历索引树...转载 2019-12-18 16:00:04 · 545 阅读 · 0 评论 -
mysql数据库死锁的产生原因及解决办法
这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下 数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的...转载 2018-03-27 04:27:54 · 234 阅读 · 0 评论 -
mysql死锁问题分析
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。 Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。 为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。 图1 应用日志1 死...转载 2018-04-22 02:29:36 · 1602 阅读 · 1 评论 -
分表分库后带来问题(主键冲突)
主键冲突问题分库分表的环境中,数据分布在不同的分片上,不能再借助数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。添加数据>主键生成中心>分库决策中心>切换相应库>执行添加 事务问题在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程...转载 2018-04-30 19:00:14 · 3179 阅读 · 0 评论 -
Twitter的分布式自增ID算法snowflake(有改动Java版)
分布式ID生成器 全局唯一ID生成 分布式纯数字ID其实这也不是Twitter独有的,mongodb也采用类似的方法生产自增ID。对于全局唯一ID的说明请参考我另一篇文章 : 高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]该算法最大的好处就是:纯数字;基本有序递增为了简单起见,我这里对snowflake算法进行了一点点修改,修改后的格式为:41位时间戳 |10位进程号 |12位...转载 2018-04-30 22:49:30 · 404 阅读 · 0 评论 -
如何正确理解CAP理论?
来源:CNW.com.cn特邀撰稿人 逸凡 在大数据领域,被业界广泛谈及的CAP理论存在着一些关键性的认知误区,而只有全面地考察与分析分布式环境中的各种场景,我们才能真正正确地理解它。 目前,CAP(Consistency一致性、Availability可用性、Partition-tolerance分区可容忍性)理论普遍被当作是大数据技术的理论基础。同时,根据该理论,业界有一种非常流行、非常“专...转载 2018-05-02 03:40:23 · 160 阅读 · 0 评论 -
Union和Union All的区别
假设我们有一个表Student,包括以下字段与数据: 01.drop table student; 02. 03.create table student 04.( 05.id int primary key, 06.name nvarchar2(50) not null, 07.score number not null 08.); 09. 10.insert...转载 2018-05-07 01:20:55 · 114 阅读 · 0 评论 -
Sql语句中IN和exists的区别及应用
表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。 具体sql语句如下: 1 SELECT 2 ...转载 2018-05-08 04:11:31 · 210 阅读 · 0 评论 -
mysql 事务的隔离级别
事务的隔离级别分别是:1、未提交读(Read uncommitted) 事务中的修改及时没提交也会被其他事务可见,这样会产生脏读,如果事务失败回滚,则其他事务之前的到的数据则是脏数据。从性能上讲,不会别别的事务提高太多,但是极其不安全。2、读提交(Read committed) 又可叫不可重复读,大多数数据库默认的隔离模式(MySQL不是)。在事务完成提交之前,其他事务看不到该事务的修改结果。执行...原创 2018-06-15 00:01:53 · 163 阅读 · 0 评论 -
数据库分库分表思路
一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...转载 2018-07-25 18:06:48 · 183 阅读 · 0 评论 -
mysql远程连接 Host * is not allowed to connect to this MySQL server
在本机登入mysql后,更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改为'%'。代码如下 mysql>mysql>use mysql;mysql>select 'host' from user where user='root';#查看mysql库中的user表的host值(即可进行连接访问的主机/IP...转载 2018-07-31 14:36:22 · 29316 阅读 · 10 评论 -
linux yum 安装mysql
1、安装查看有没有安装过: yum list installed MySQL* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: yum install mysql 安装mysql 服务器端: yum install mysql-serveryum install mysql-devel...转载 2018-07-31 15:24:55 · 124 阅读 · 0 评论 -
CentOS7下安装Mysql失败经历--CentOS7使用yum安装和卸载Mysql过程
起因自己租用的BandwagonVPS上安装了个CentOS7,然后开始安装各种软件,结果yum安装MySQL发现MySQL在yum源中的Mysql不对劲,于是自己百度搜索安装方法。终于我搜到了这篇文章:http://www.mamicode.com/info-detail-503994.html,于是我就兴高采烈地安装了起来。安装过程我不建议这么安装,因为我经历的是一个失败的过程,...转载 2018-07-31 16:33:07 · 286 阅读 · 0 评论 -
mybatis动态调用表名和字段名
一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能。今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到。这种情况下,就需要构建sql来动态传入表名、字段名了。现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助。 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译...转载 2018-08-06 19:21:59 · 440 阅读 · 0 评论 -
存储过程的优缺点个人总结
公司的系统是自主开发的,历史比较悠久,有不少是传统C/S架构,采用存储过程来处理业务逻辑。近来做新系统的时候,我采用了三层架构,抛弃存储过程改用ORM。有同事问及不用存储过程的理由,我想了一下,对存储过程做了如下总结。本人经验和水平有限,总结有所偏颇,还请大家纠察。 优点1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利...转载 2018-10-17 14:39:28 · 532 阅读 · 0 评论 -
mysql数据库如何支持emoji表情
mysql数据库的默认字符集utf8,只能存储3个字节的数据。标准的emoji表情是4个字节,在APP端输入保存表情是用户的普遍需求和行为。 插入数据库报错如下: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1, 异常:org.spr...转载 2018-03-27 04:00:50 · 1546 阅读 · 0 评论 -
mysql view
定义:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。1、视图是一个虚拟存在的表,视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建。使用视图就可以不用看到数据表中的所有数据,而是只想得到所需的数据。当我们创建一个视图的时候,实际上是在数据库里执行了SELECT语句,SELECT语句包含了字段名称、函数、运算符,来给用户显示数据。2、视图在外观上和表很相似,但是它不需要...转载 2018-03-26 16:00:59 · 139 阅读 · 0 评论 -
数据库事务隔离级别
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。脏读:没有提交就可以读取到数据不可重复读:再重复读一次,数据与上次读到的数据不一样...转载 2017-08-11 04:16:15 · 153 阅读 · 0 评论 -
mysql Access denied for user root@localhost错误解决方法总结(转)
MySQL Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下。 错误代码 1045Access denied for user 'root'@'localhost' (using password:YES)解决办法是重新设置root用户密转载 2017-08-09 01:47:43 · 766 阅读 · 0 评论 -
MySQL数据库备份还原(基于binlog的增量备份)
1 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时转载 2017-08-09 01:43:43 · 289 阅读 · 0 评论 -
存储过程的作用是什么?
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量4.安转载 2017-08-10 03:41:17 · 10659 阅读 · 2 评论 -
JDBC为什么要使用PreparedStatement而不是Statement
:创建时的区别: Statement statement = conn.createStatement(); PreparedStatement preStatement = conn.prepareStatement(sql); 执行的时候: ResultSet rSet = statement.executeQuery(sql); Resu转载 2017-08-10 03:59:36 · 411 阅读 · 0 评论 -
一个sql的四种写法:sum...case.when、sum if、select(select..)、group by
500w数据 SELECT SUM(LOANEE_AMOUNT) as 'JE', sum(case when a.DEBT_TYPE = 0 then LOANEE_AMOUNT else 0 end) as 'CZ', sum(case when a.DEBT_TYPE = 1 then LOANEE_AMOUNT else 0 e转载 2017-09-03 19:08:06 · 4573 阅读 · 0 评论 -
用mycat做读写分离:基于 MySQL主从复制
mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的 搭建之前我们先要配置MySQL的主从复制,这个过程很长,我这里就不写了,有兴趣的可以看看我写的这篇文章。linux centos下mysql数据库的主从复制环境搭建mycat在应用当中的作用可以看下图mycat可以让程序员只需要关心业务转载 2017-08-16 03:09:35 · 181 阅读 · 0 评论 -
MYSQL中用SUM()代替count(*)做不同条件下的计数运算
某些情况下用count(*)来做计数是不能很好的实现的,这个时候可以用sum配合case表达式来做累加计数,范例如下:SELECT sum(case when rep_haddf = 1 then 1 else 0 end) , sum(case when rep_progress = 100 then 1 else 0 end)FROM dailly_report转载 2017-08-16 03:47:22 · 3985 阅读 · 1 评论 -
mysql怎么终止当前正在执行的sql语句
show processlist;找出你要停止的语句然后找出你要终止的语句的id在系统下mysqladmin -uroot -ppassword kill 要杀的ID转载 2017-11-09 11:16:34 · 15802 阅读 · 0 评论 -
MySQL数据类型的最优选择
MySQL数据类型的最优选择 慎重选择数据类型很重要、为啥哩?可以提高性能、原理如下: ● 存储(内存、磁盘)、从而节省I/O(检索相同数据情况下) ● 计算、进而减负CPU负载 数据类型总体可分三种:数字、字符和时期 ㈠ 数字转载 2017-10-25 17:02:55 · 374 阅读 · 0 评论 -
mysql 如何用一个表的字段填充另一个表
UPDATE friends INNER JOIN users ON friends.friendid=users.useridSET friends.friendname=users.username转载 2017-08-10 23:26:40 · 2369 阅读 · 0 评论 -
count(*),count(1)和count(field)区别
印象中,count(key)比count(*)效率要高,因此在项目中用了count(field)的形式来统计行数。在code reivew时被指出应用count(*),于是查了下,并做了下简单测试,果然是我记错了,足见code review是多么有用啊。count(*)count(*)是对不为null的行进行计数,因此某一行只要不是所有列都为null(即只要是存在的记录),就会被计转载 2017-12-19 15:15:31 · 240 阅读 · 0 评论 -
mysql 笔记
1、MySQL常用引擎的介绍(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表(2)InnoDB存储引擎*该存储引擎支持事务,支持行级锁。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储引擎的特点:支持自动增长...原创 2018-03-22 14:44:21 · 164 阅读 · 0 评论 -
CentOS7下MySQL5.7安装与配置(YUM)
安装环境:CentOS7 64位,MySQL5.71、配置YUM源在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # 下载mysql源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# 安装mysql源yum lo...转载 2018-03-22 17:28:22 · 1022 阅读 · 0 评论 -
MySQL基础教程之存储过程
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来, 存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创建表,更新数据, 删除等等。存储过程存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来,转载 2017-08-09 01:52:46 · 286 阅读 · 0 评论