数据库
yinni11
这个作者很懒,什么都没留下…
展开
-
关于SQL时间类型的模糊查询
关于SQL时间类型的模糊查询今天用time Like '2008-06-01%'语句来查询该天的所有数据,被提示语句错误。查了一下才发现该模糊查询只能用于String类型的字段。自己也查阅了一些资料。关于时间的模糊查询有以下三种方法:1.Convert转成String,在用Like查询。select * from table1 where convert(varchar,date,...转载 2019-01-25 11:03:02 · 1110 阅读 · 0 评论 -
千万数据的分库分表(一)
单表数据量达到1000W以后,就要拆了.背景情况用户表达到了 几千万级别,在做很多操作都比较吃力,.所以,考虑对其进行分表.常用的切分方案数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照...转载 2018-08-23 19:08:23 · 538 阅读 · 0 评论 -
Mysql中的分表分库需要考虑的问题
1.数据库的切分引申的 数据源管理思考 可以理解为数据库的路由问题。即进行数据库的操作的时候,选择哪个数据库。 主要有两种思路:A. 客户端模式,在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个数据库,在模块内完成数据的整合; B. 通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明;可能 90%以上的人在面对上面这两种解决...转载 2018-08-23 18:52:43 · 1001 阅读 · 0 评论 -
MySQL 覆盖索引
本文主要概述mysql的覆盖索引,以及几种常见的优化场景内容概要 聚集索引和辅助索引 什么是覆盖索引 几种优化场景 总体建议聚集索引和辅助索引聚集索引(主键索引)—innodb存储引擎是索引组织表,即表中的数据按照主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据—聚集索引的叶子节点称为数据页,数据页,数据页!重要...转载 2018-08-18 20:50:24 · 372 阅读 · 0 评论 -
覆盖索引 covering index
简介覆盖索引是InnoDB中索引的特例,索引中包含查询的所有必填字段;换句话说,索引本身包含执行查询所需的数据,而不必执行额外的读取。请注意,在InnoDB中,数据是使用主键索引存储的。换句话说,数据通过主键索引物理地存储为B +树。因此,主键被包括在所有二级索引的叶节点中以便建立从二级索引到实际数据行的引用。因此,任何涉及二级索引的查找都必须从根节点通过分支节点导航到正确的叶节点以获...转载 2018-08-18 20:27:22 · 387 阅读 · 0 评论 -
Mysql覆盖索引 covering index 或者 index coverage
组合索引提到组合索引,大家都知道“最左前缀”原则。例如,创建索引 idx_name_age (name,age) ,通常情况下,where age=50 或者 where age>50 之类的,是不会使用到idx_a_b的。那有没有特殊情况呢?假设表是:CREATE TABLE users (id int(10) unsigned NOT NULL AUTO_INCREMENT,na...转载 2018-08-18 19:14:55 · 381 阅读 · 0 评论 -
事务日志
事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所有采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢...原创 2018-08-08 16:24:02 · 2295 阅读 · 3 评论 -
java+mybatis分表路由
分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。1、定义路由接口public interface RouteTableAble { /**...转载 2018-07-31 15:56:59 · 980 阅读 · 0 评论 -
数据库的隔离级别以及悲观锁和乐观锁详解
一、事务四大属性分别是原子性、一致性、隔离性、持久性。1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一...转载 2018-07-27 17:08:26 · 158 阅读 · 0 评论 -
数据库的隔离级别以及锁的关系的思考
前言 1.乐观锁和悲观锁 与 数据库的隔离级别的关系 或者两者使用的场景是什么? 我在网上所能找到的答案,帮助个人的理解。 答案一:事务隔离级别是并发控制的整体解决方案,其实际上是综合利用各种类型的锁和行版本控制,来解决并发问题。锁是数据库并发控制的内部机制,是基础。对用户来说,只有当事务隔离级别无法解决一些并发问题和需求时,才有必要在语句中手动设置...原创 2018-07-27 17:05:56 · 5040 阅读 · 0 评论 -
事务并发的可能问题与其解决方案 -----数据库的隔离级别和 悲观锁、乐观锁
一、多个事务并发时可能遇到的问题Lost Update 更新丢失 a. 第一类更新丢失,回滚覆盖:撤消一个事务时,在该事务内的写操作要回滚,把其它已提交的事务写入的数据覆盖了。 b. 第二类更新丢失,提交覆盖:提交一个事务时,写操作依赖于事务内读到的数据,读发生在其他事务提交前,写发生在其他事务提交后,把其他已提交的事务写入的数据覆盖了。这是不可重复读的特例。 Dirty Read 脏读...转载 2018-05-23 23:19:38 · 242 阅读 · 0 评论 -
分区表的工作原理
适用场景1、表非常大,无法全部存在内存,或者只在表的最后有热点数据,其他都是历史数据。2、分区表的数据更易维护,可以对独立的分区进行独立的操作。3、分区表的数据可以分布在不同的机器上,从而高效适用资源。4、可以使用分区表来避免某些特殊的瓶颈5、可以备份和恢复独立的分区限制1、一个表最多只能有1024个分区2、5.1版本中,分区表表达式必须是整数,5.5可以使用列分区3、分区表字段如果...转载 2018-08-23 19:35:59 · 555 阅读 · 0 评论 -
MyCAT简易入门
MyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之。于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显。这篇文章主要是MyCAT的入门部署。一、安装java因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本Java Oracle官方下载地址为:http://www.oracle...转载 2018-08-23 20:02:33 · 116 阅读 · 0 评论 -
Spring整合ORM框架 ----- Spring-data-jpa
大致整理一个提纲: 1、Spring-data-jpa的基本介绍; 2、和Spring整合; 3、基本的使用方式; 4、复杂查询,包括多表关联,分页,排序等;现在开始: 1、Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全...转载 2018-10-12 15:52:57 · 502 阅读 · 0 评论 -
mycat分表分库的原理是什么
1. mycat是怎样实现分库分表的?mycat里面通过定义路由规则来(路由规则里面会定义分片字段,以及分片算法)。分片算法有多种,你所说的hash是其中一种,还有取模、按范围分片等等。在mycat里面,会对所有传递的sql语句做路由处理(路由处理的依据就是表是否分片,如果分片,那么需要依据分片字段和对应的分片算法来判断sql应该传递到哪一个、或者哪几个、又或者全部节点去执行)2. myca...转载 2018-09-14 19:33:50 · 20319 阅读 · 7 评论 -
sharding-jdbc系列之按月动态分表(十二)
前言sharding-jdbc默认是不支持在程序的运行过程中动态的创建表的,如果需要做到动态的按月分表,所有的表需要提前创建好哦, 比如,你可以把这两年的表全部建立好。或者另外写个程序,专门用来创建表,具体怎么做,你们自己选择,本文主要是讲,如果通过sharding-jdbc实现按月动态分表。代码实现设置数据源的时候,给该表设置分表规则java代码Bean publi...转载 2018-09-14 16:08:58 · 4549 阅读 · 0 评论 -
sharding-jdbc结合mybatis实现分库分表功能 --配置文件方式
最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目。但是我们实际项目中会碰到很多复杂的场景,比如数据量很大的情况下如何保证性能。今天我就给大家介绍数据库分库分表的优化,本文介绍mybatis结合当当网的sharding-jdbc分库分表技术(原理这里不做介绍) 首先在pom文件中引入需...转载 2018-09-14 11:51:19 · 1896 阅读 · 1 评论 -
Spring boot+mybatis+mysql+ sharding-jdbc实现分库分表学习demo
项目初期版本使用当当sharding-jdbc进行数据库的分库分表操作,后续项目存储更换为自研弹性数据库。总结学习当当数据库中间件sharding-jdbc,并完成demo,可运行,下面列出demo代码说明: 建表sql /*Navicat MySQL Data Transfer 在Navicat中直接运行本sql文件创建表* 两个库:test_msg1 ...转载 2018-09-12 20:17:39 · 1351 阅读 · 1 评论 -
MySql常用函数大全讲解
MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。例如,字符串连接函数可以很方便的将多个字符串连接在一起。在这一讲中将讲解的内容包括:数学函数字符串函数日期和时间函数条件判断函数系统信息函数加密函数格式化函数 MySQL函数是MySQL数据...转载 2018-08-29 19:54:43 · 158 阅读 · 0 评论 -
分库后如何高效的做分页
现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库。现在不知道如何做分页查询列表?先决原则:数据分库时尽量选择索引字段,最好此字段还是唯一的。数据分库时建表时结合业务,选择where后查询比较频繁的字段。 解决方案泛泛之谈:1、直接使用跨库的多表联合查询。不建议。2、向6台数据库server均发送一个查询请求,然后对所...转载 2018-08-21 22:45:43 · 1324 阅读 · 0 评论 -
如何对分库后的数据进行分页查询?
分库分表的排序1. 对于单库,冗余一个汇总所有数据表,用于全部数据的排序,但是当数据量大,汇总表将会成为瓶颈。这不是一个很好的方案2. 无论单库还是多个分库,都由程序读取需要数据并作排序。 排序的几种方式: 大都是按时间排序的,如果在客户端可以直接判断在哪个分表最好,可以直接读取指定分表并作排序 例如: 汇总表td_test_all;而分表是按compan...转载 2018-08-21 22:44:16 · 1413 阅读 · 0 评论 -
MySQL创建用户以及授权
grant all on *.* to 'user1' identified by 'passwd'; #创建user1赋予all所有权限。 grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd'; #创建user2并指定登陆IP为192.168.133.1,然后赋予se...转载 2018-08-23 20:26:52 · 138 阅读 · 0 评论 -
分库分表的面试题3
1、面试题 如何设计可以动态扩容缩容的分库分表方案? 2、面试官心里分析 (1)选择一个数据库中间件,调研、学习、测试(2)设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,3个库每个库4个表(3)基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写(4)完成单库单表到分库分表的迁移,双写方案...转载 2018-08-23 20:18:26 · 4356 阅读 · 1 评论 -
数据库分库分表策略的具体实现方案
相关文章:1、 使用Spring AOP实现MySQL数据库读写分离案例分析2、MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解3、MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结4、使用mysqlreplicate命令快速搭建 Mysql 主从复制5、大型网站应用之海量数据和高并发解决方案总结一二一、MySQL扩展具体的实现方...转载 2018-07-26 11:10:43 · 190 阅读 · 0 评论 -
千万数据的分库分表(一)
单表数据量达到1000W以后,就要拆了.背景情况用户表达到了 几千万级别,在做很多操作都比较吃力,.所以,考虑对其进行分表.常用的切分方案数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照...转载 2018-07-26 10:30:12 · 278 阅读 · 0 评论 -
深入理解JDBC的超时设置
恰当的JDBC超时设置能够有效地减少服务失效的时间。本文将对数据库的各种超时设置及其设置方法做介绍。真实案例:应用服务器在遭到DDos攻击后无法响应在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作。 通过分析系统的thread dump发现,业务系统...转载 2018-07-16 17:02:10 · 1546 阅读 · 1 评论 -
Mysql中explain作用详解
一、MYSQL的索引索引(Index):帮助Mysql高效获取数据的一种数据结构。用于提高查找效率,可以比作字典。可以简单理解为排好序的快速查找的数据结构。索引的作用:便于查询和排序(所以添加索引会影响where 语句与 order by 排序语句)。在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据。这样就可以在这些数据结构上实现高级查找算法。这些数据结构就是索...转载 2018-07-16 14:54:04 · 167 阅读 · 0 评论 -
JDBC获取连接的三种方法
下面是获取连接的三种方式,其中最常使用的是第三种, 1、DriverManager.getConnection(url); 2、DriverManager.getConnection(url,info); 3、DriverManager.getConnection(url,user,password); 方法一、该方法用于获得试图建立到指定数据库URL的连接。DriverMan...转载 2018-07-16 14:25:28 · 5668 阅读 · 1 评论 -
mysql一个数据库允许存放多少个表?数据库里表多少个才合理?
mysql的配置项里是否有对一个数据库中,是否有最大数据表的限制,后面查询了相关资料,才发现,mysql数据库中,对单个数据库中的最大允许建立的数据表是没有配置项,也就是说没有限制的。mysql单数据库对数据表限制数量的问题:1.一个数据库是没有表现值的,或者说这个被限制的值很大2.一个mysqld服务可以支持的表对象数量是,42亿多点,所以这个限制基本上不需要考虑 从性能考虑的话,一个数据库建立...转载 2018-04-23 16:48:41 · 32394 阅读 · 1 评论 -
数据库的约束简介
约束的简介数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则...转载 2018-05-31 23:49:04 · 401 阅读 · 0 评论 -
数据库中的索引、键和约束
一.索引 1.什么是索引? 索引是对数据库表中一列或多列的值进行排序的一种结构。 在关系型数据库中,索引是一种与表有关的数据库结构,是事实存在的。它可以使对于表的select等等操作更加快速,相当于一本书的目录。 对于一张表,如果我们想要找到某一列符合特定值的记录,第一种方法是全表搜索,匹配,然后把所有符合的记录列出,但是这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建...转载 2018-05-31 23:43:45 · 1186 阅读 · 0 评论 -
数据库事务中的隔离级别和锁
数据库事务中的隔离级别和锁数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性、安全性也是我们需要研究的问题。ACID首先总结一下数据库事务正确执行的四个要素(ACID):原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做,不能只做一部分;一致性(Consistency):在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还...转载 2018-05-15 23:17:25 · 323 阅读 · 0 评论 -
java采用jdbc连接SQL数据库实例
<p>import java.sql.*; </p><p>public class test { public static void main(String[] args) { String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎 String connect...转载 2018-05-17 22:09:11 · 330 阅读 · 0 评论 -
死锁引起的思考:事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。
最近在做一个访问频率比较高的app接口,框架用的dapper,在我们后台写的异常日志会偶尔出现以下错误。事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务实所有的死锁最深层的原因就是一个:资源竞争 表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B 另一个用户B 访问表B(锁住了表B),然后企图访问表A 这时用户A由于用户...转载 2018-05-17 22:03:55 · 24276 阅读 · 1 评论 -
MySQL数据库优化(三)——MySQL悲观锁&&乐观锁(并发控制)
一、悲观锁 1、排它锁,当事务在操作数据时把这部分数据进行锁定,直到操作完毕后再解锁,其他事务操作才可操作该部分数据。这将防止其他进程读取或修改表中的数据。 2、实现:大多数情况下依靠数据库的锁机制实现 一般使用 select ...for update 对所选择的数据进行加锁处理,例如select * from account where name=”Max” for upd...转载 2018-04-23 18:29:28 · 238 阅读 · 0 评论 -
深入浅出数据库索引原理
前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当时我就楞了...转载 2018-07-03 21:15:02 · 145 阅读 · 0 评论 -
索引的实现原理
这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的以及针对B+树索引的查询,插入,删除,更新等操作的处理方法。Oracle和DB2数据库索引的实现基本上也是大同小异的。文章写得很通俗易懂,就转在这了。关于B+树和索引内部结构可以参考:《B 树、B- 树、B+ 树和B* 树》和《深入理解DB2索引(Index)》。00 – 背景知识- B-Tree & B+T...转载 2018-07-03 21:50:35 · 254 阅读 · 0 评论 -
数据库分库分表的应用场景及解决方案
数据库分库分表的应用场景及解决方案 现实业务场景中,为了保障客户体验并满足业务的线性增长。会对数据量巨大,且业务会始终进行的产品进行分表分库策略。但是如何合理的根据业务采取争取的分表分库策略至关重要。下面以具体实例来进行分析。• 场景一:用户中心,单key业务如何进行数据库切分• 场景二:订单中心,多key业务如何进行数据库切分场景一:用户中心数据库切分架构实践|场景介...转载 2018-07-26 00:21:27 · 390 阅读 · 0 评论 -
最简单的数据库“范式”教程
既然都叫最简单的数据库“范式”教程,我觉得它一定要满足这个要求:看完这篇博客,你一定会明白数据库的“范式”和那些诸如“完全函数依赖”,“部分函数依赖”,“传递函数依赖”等烦人的概念,前提是你得跟着我的思路认真的读完它,好,准备好你的半个小时了吗?我们开始。目录什么是范式?贯穿全文的一个例子。第一范式(1NF)几个重要的概念。第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)...转载 2018-07-14 22:01:41 · 488 阅读 · 0 评论 -
分库分表的几种常见形式以及可能遇到的难题
摘要在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易...转载 2018-07-05 23:04:49 · 171 阅读 · 0 评论