随笔分类 - SQL
1
mysql的ACID的理解
摘要:这是在网上copy下来的ACID的概念,可以直接跳过看后面: 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物
阅读全文
高性能mysql-锁的调试
摘要:锁的调试分为俩部分,一是服务器级别的锁的调试。二是存储引擎级别的锁的调试 对于服务器级别的锁的调试: 服务器级别的锁的类型有表锁,全局锁,命名锁,字符锁 调试命令: Show processlist 来查看当前的查询进程的状态,具体有哪些状态可能需要在实践中自己去查了。 还没有可以找到谁持有锁的方法
阅读全文
MySQL insert语句锁分析
摘要:最近对insert的锁操作比较费解,所以自己动手,一看究竟。主要是通过一下三个sql来看一下执行中的sql的到底使用了什么锁。 select * from information_schema.INNODB_TRX\G; //记录当前正在执行的事务,以及事务的一些状态 select * from i
阅读全文
分布式事务 - 两阶段提交与三阶段提交
摘要:在分布式系统中,著有CAP理论,该理论由加州大学伯克利分校的Eric Brewer教授提出,该理论阐述了在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区 容错性(Partition tolerance)。 一致性在分布式系统中数据往往存在
阅读全文
JDBC架构
摘要:JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成: JDBC API: 提供了应用程序对JDBC的管理连接。 JDBC Driver API: 支持JDBC管理到驱动器连接。 JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据
阅读全文
MySQL Explain详解
摘要:在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL
阅读全文
XA: 事务和两阶段提交
摘要:本文原文连接: http://blog.csdn.net/bluishglc/article/details/7612811 ,转载请注明出处! 1.XA XA是由X/Open组织提出的两阶段提交协议,分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和
阅读全文
【MySQL】死锁问题分析
摘要:1、MySQL常用存储引擎的锁机制: MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 2、各种锁特点:
阅读全文
第四章-shceme和数据类型优化
摘要:选择数据类型的原则: 1.更小通常更好。因为占用更少磁盘,内存和cpu缓存。但是要确保没有低估,因为进行alter时,是很耗时和头疼的操作。所以当无法确定数据类型的时候,选择不会超过范围的最小类型。 2.简单就好。简单的数据类型消耗的cpu更好,比如整型比字符串好 3.尽量避免使用null。主要是因
阅读全文
SQL范式
摘要:作者:知乎用户链接:https://www.zhihu.com/question/24696366/answer/29189700来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 国内绝大多数院校用的王珊的《数据库系统概论》这本教材,某些方面并没有给出很详细很明确的解释
阅读全文
MySQL性能优化之延迟关联
摘要:【背景】 某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下。使用工具查看数据库正在执行的sql ,排在前面的大部分是: SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time,
阅读全文
mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
摘要:转自: https://blog.csdn.net/tsxw24/article/details/44994835 我经常使用order by和limit来做数据分页显示并排序,一直也没发现过什么问题。但这两天缺遇到一个严重的问题,在按时间戳升序排列并用limit分批读取数据时,却发现在某些记录丢失
阅读全文
Mybatis中的update动态SQL语句
摘要:Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: 其中id对应同名java文件中的方法,resultMap对应的自定义的数据类型(当使用java自带类型就更容易了,比如java.lang.String之类的)。 但是涉及到更新操作时,可能不需要对所有字段更新,这时
阅读全文
mysql 中 datetime和 timestamp的区别
摘要:DATETIME日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。 TIMESTAMP[(M)]时间
阅读全文
数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)
摘要:一、数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。 √: 可能出现 ×: 不会出现 脏读 不
阅读全文
mybatis使用count返回int的方法
摘要:<select id="countByExample" resultType="java.lang.Integer" > select count(*) from XXXXXX</select>直接写"java.lang.Integer",接口中的返回值写int。抓住楼主就是一个过肩摔~
阅读全文
数据库物理分页和逻辑分页简单介绍
摘要:1、物理分页: 物理分页就是数据库本身提供了分页方式,如mysql的limit,好处是效率高,不好的地方就是不同数据库有不同的搞法。 2、逻辑分页: 逻辑分页利用游标分页,好处是所有数据库都统一,坏处就是效率低。 3、常用orm框架采用的分页技术: ①:hibernate采用的是物理分页; ②:My
阅读全文
SQL日期格式转换
摘要:使用CONVERT:CONVERT(data_type[(length)],expression[,style])selectCONVERT(varchar,getdate(),120)2004-09-1211:06:08selectreplace(replace(replace(CONVERT(v...
阅读全文
聚合函数、group by
摘要:聚合函数: sql语言中一种特殊的函数:聚合函数,SUM, COUNT, MAX, MIN, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。SELECT SUM(population) FROM COUNTRY这里的SUM作用在所有返回记录的population字段上,结果就是...
阅读全文
使用SQL语句创建和删除约束
摘要:约束的目的就是确保表中的数据的完整性。常用的约束类型如下:主键约束:(Primary Key constraint) 要求主键列唯一,并且不允许为空唯一约束:(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值检查约束:(Check Constraint)某列取值范围限制...
阅读全文
1