Welcome 微信登录

首页 / 数据库 / MySQL

Mysql 数据库死锁过程分析(select for update)

Mysql 数据库死锁过程分析(select for update)

近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据。我们Mysql的存储引擎是innodb,支持行锁。解决同时拿数据的方法有很多,为了更加简单,不增加其他表和服务的情况下,我们考虑采用select... for update的方式,这样X锁锁住查询的数据段,表里其他数据没有锁,其他业务逻辑还是可以操作。这样一台服务器比如...
解决MySQL客户端输出窗口显示中文乱码问题的办法

解决MySQL客户端输出窗口显示中文乱码问题的办法

最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like "char%"; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是...
安装Mysql时出现错误及解决办法

安装Mysql时出现错误及解决办法

因为一时手痒痒更新了一下驱动,结果导致无线网卡出了问题。然而就算是从官网上下载了驱动各种折腾也没有弄好,心里特别堵。无奈只有重装系统这一条路了。这里表示特别难过,因为电脑上东西实在太多了,而且各种环境变量。所以建议一些对电脑特不是别精通的最好不好胡乱倒腾(像我这样的人),除非你想专门研究。重装的悲剧就是所有的软件都得重新配置。有点不太情愿,因为毕竟没有太多的闲时间。但是,也有点小确幸,因为一直在学习其他的知识,开始的时候配置好的东西就再也没有研究过,只觉得...
MySQL缓存的查询和清除命令使用详解

MySQL缓存的查询和清除命令使用详解

Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。 1.配置查询缓存 修改配置文件,修改[mysqld]下的query_cache_size和query_cache_type(如果没有则添加)。其中query_cache_size表示缓存的大小,而query_cache_type有3个值,表示缓存那种类 型的select结果集,query...
MySQL索引之聚集索引介绍

MySQL索引之聚集索引介绍

在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。也有人把聚集索引称为聚簇索引。当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。简言之,聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序,而非聚集...
MySQL中Binary Log二进制日志文件的基本操作命令小结

MySQL中Binary Log二进制日志文件的基本操作命令小结

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与master同步。1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可eg: [mysqld] ......
将MySQL查询结果按值排序的简要教程

将MySQL查询结果按值排序的简要教程

MySQL查询结果如何排序呢?这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看。之前有一个功能修改,要求MySQL查询结果中:id name * * *1 lucy ...3 lucy ...2 lily ...4 lucy ...名字为lucy的优先排在前面,百思不得其解,可能有人会说简单 union嘛 或者弄个临时表什么的,其实我也想过,但是本身SQL逻辑就很多了(上面只是简例),再union的话或者临时...
MySQL的LEFT JOIN表连接的进阶学习教程

MySQL的LEFT JOIN表连接的进阶学习教程

LEFT JOIN的主表这里所说的主表是指在连接查询里MySQL以哪个表为主进行查询。比如说在LEFT JOIN查询里,一般来说左表就是主表,但这只是经验之谈,很多时候经验主义是靠不住的,为了说明问题,先来个例子,建两个演示用的表categories和posts:CREATE TABLE IF NOT EXISTS `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varc...
MySQL中对表连接查询的简单优化教程

MySQL中对表连接查询的简单优化教程

在MySQL中,A LEFT JOIN B join_condition执行过程如下:· 根据表A和A依赖的所有表设置表B。· 根据LEFT JOIN条件中使用的所有表(除了B)设置表A。· LEFT JOIN条件用于确定如何从表B搜索行。(换句话说,不使用WHERE子句中的任何条件)。· 可以对所有标准联接进行优化,只是只有从它所依赖的所有表读取的表例外。如果出现循环依赖关系,MySQL提示出现一个错误。· 进行所有标准WHERE优化。· 如果A中有一行...
解决Java程序使用MySQL时返回参数为乱码的示例教程

解决Java程序使用MySQL时返回参数为乱码的示例教程

先说MySQL的字符集问题。Windows下可通过修改my.ini内的default-character-set=utf8//客户端的默认字符集在MySQL客户端工具中输入SHOW VARIABLES LIKE "character%"; 显示如下这样执行读取信息返回中文为乱码,解决办法是,在连接数据库之后,读取数据之前,先执行一项查询 SET NAMES "utf8"; 即可显示正常。最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(...
MySQL中触发器的基础学习教程

MySQL中触发器的基础学习教程

0.触发器的基本概念触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:(1).安全性。可以基于数据库的值使用户具有操作数据库的某种权利。 # 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。 # 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。(2).审计。可以跟踪用户对数据库的操作。 # 审计用户操...
MySQL中临时表的基本创建与使用教程

MySQL中临时表的基本创建与使用教程

当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。创建临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字:CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL) 临时...
在MySQL中创建实现自增的序列(Sequence)的教程

在MySQL中创建实现自增的序列(Sequence)的教程

项目应用中,曾有以下一个场景:接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小)。所以想到了利用一个独立的自增的sequence来解决该问题。当前数据库为:mysql由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能,理由sql语句如下:第一步:创建--Sequence 管理表DROP TABLE IF EXISTS sequence...
<< 131 132 133 134 135 136 137 138 139 140 >>