数据库
种向日葵的小仙女
这个作者很懒,什么都没留下…
展开
-
SQL语句之操作数据库
1. 操作数据库1) 创建数据库~创建一个名称为mydb1的数据库。createdatabase mydb1;~创建一个使用gbk字符集的mydb2数据库。createdatabase mydb2 character set gbk;~创建一个使用utf8字符集,并带校对规则的mydb3数据库。createdatabase mydb3 character set u...原创 2018-04-17 14:47:06 · 471 阅读 · 0 评论 -
数据库引擎
innoDB存储引擎(1) innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。(2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。(3)innodb存储引擎支持外键(foreignkey) ,外键所在的表称为子表而所依赖的...原创 2018-04-20 14:33:40 · 275 阅读 · 0 评论 -
聚集索引和非聚集索引
聚集索引聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快。只要找到第一个索引值记录,其余就连续性的记录在物理也一样连续存放。只有当表包含聚集索引时,表中的数据行才按排序顺序存储。聚集索引对应的缺点就是修改慢,因为为了保证表中记录的物理和索引顺序一致,在记录插入的时候,会对数据页重新排序。非聚集索引非聚集索引即索引中的逻辑顺序并不等同于表中行的物理顺序,两种索引都采用B+树结构。非聚集索...原创 2018-04-20 19:41:47 · 374 阅读 · 0 评论 -
数据库三大范式
原创 2018-05-27 22:04:11 · 197 阅读 · 0 评论 -
Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。HDFSHDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问...原创 2018-06-10 16:16:39 · 235 阅读 · 0 评论 -
MySql分页实现
分页sql格式是:select * from table limit (start-1)*limit,limit; 其中start是页码,limit是每页显示的条数。分页需求:客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去...原创 2018-06-19 22:27:06 · 4991 阅读 · 0 评论 -
为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?
优点:1 读写性能优异,从内存当中进行IO读写速度快。2 支持数据持久化,支持AOF和RDB两种持久化方式(由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁 盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化:指在指定的时间间隔内将内存中的数据集快照写...原创 2018-07-12 11:01:06 · 6379 阅读 · 1 评论 -
高并发系统的设计
一、http连接池优点:1、降低延迟:如果不采用连接池,每次连接发起Http请求的时候都会重新建立TCP连接(经历3次握手),用完就会关闭连接(4次挥手),如果采用连接池则减少了这部分时间损耗,别小看这几次握手,本人经过测试发现,基本上3倍的时间延迟2、支持更大的并发:如果不采用连接池,来一个请求,就创建一个连接,导致资源瓶颈,无法建立新的连接。所以采用连接池,连接的复用,可以提高并发访问...原创 2018-07-12 20:28:11 · 6366 阅读 · 0 评论 -
子查询和关联查询的区别
子查询就是查询中又嵌套的查询,表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据。子查询不一定需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)1,表关联的效率要高于子查询,因为子查询走的是笛卡尔积2,表关联可能有多条记录,子查询只有一条记录,如果需要唯一的列,最好走子查询...原创 2018-07-19 22:30:02 · 11975 阅读 · 5 评论 -
正向代理和反向代理
1. 正向代理:比如,客户端要访问Google,但是不直接去访问,而且让一个代理服务器去访问Google,然后代理服务器再将访问到的信息返回给客户端。这里的代理服务器所实现的功能就叫做正向代理。特点:Google并不知道是哪个客户端访问的。客户端要进行一些设置才能使用正向代理。根据这个特点,我们就可以在国外部署一个代理服务器,这个服务器有正向代理的功能。我们就可以通过这个代理服务器实现科学...原创 2018-07-25 20:16:27 · 354 阅读 · 0 评论 -
C3P0数据库连接池死锁问题
死锁的产生原理是:存在线程同时占有两个以上的连接对象的情况。 比如某连接池中有2个连接对象。 有两个线程分别占用了一个,又分别来申请另一个。这时由于连接池空,而两个线程本身都卡在连接池上,不可能释放原来占有的连接对象,这时产生死锁。 连接池死锁,会导致软件和数据库相关的部份无响应。比如登陆功能,会用数据库做用户校验,发生连接池死锁后,登陆功能会无法使用(点登陆按钮后,长时间无相应)。策略...原创 2018-07-31 10:56:30 · 2047 阅读 · 0 评论 -
LRU缓存结构
使用双向链表+哈希表链表头部保存的是最近时间被访问过的数据,尾部保存的是最长时间内没有被访问过的数据。当缓存满了,删除链表尾部的节点。每个链表的结构都被设为hashmap对象。哈希表保存每个节点的地址,可以基本保证在O(1)时间内查找节点。采用双向链表是因为这个头部和尾部进行数据删除的时间复杂度是O(1),如果是要删除中间的节点,则是单链表的节点删除,时间复杂度为O(1)。...原创 2018-07-31 15:15:57 · 1970 阅读 · 0 评论 -
MTSQL索引结构
先介绍几种数据结构:AVL:平衡二叉树,Windows对进程地址空间的管理用到了平衡二叉树。红黑树:平衡二叉树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)有如下几个特性:1)每个结点要么是红的,要么是黑的。2)根结点是黑的。3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。4)如果一个结点是红的,那么它的俩个儿子都是黑的。5)对于任一结点而言,其到叶结点树尾端NI...原创 2018-04-19 21:28:25 · 435 阅读 · 0 评论 -
索引的分类
注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。1、索引我们分为四类来讲单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引、1.1、单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。...原创 2018-04-19 20:31:41 · 14361 阅读 · 8 评论 -
SQL语句之操作表
1) 创建表~创建一个员工表employee create table employee( id intprimary key auto_increment, namevarchar(20) unique, gender bitnot null, birthdaydate...原创 2018-04-17 14:51:24 · 704 阅读 · 0 评论 -
SQL语句之操作表记录(CRUD)
(1)INSERT INSERT INTO table [(column [, column...])] VALUES (value [, value...]); 插入的数据应与字段的数据类型相同。 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。 在values中列出的数据位置必须与被加入的列的排列位置相对应。 字符和日期型数据应包含在单引号...原创 2018-04-17 15:17:04 · 1427 阅读 · 0 评论 -
多表设计,外键
1.外键约束表是用来保存显示生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,向这种约束就叫做外键约束 create table dept( id int primarykey auto_increment, name varchar(20)...原创 2018-04-18 09:49:08 · 1972 阅读 · 0 评论 -
多表查询。笛卡尔积查询,内连接,外连接
如果想查询出每个部门,和每个部门对应的员工的名字。(dept,emp两张表)。图1笛卡尔积查询笛卡尔积查询:将两张表的记录进行一个相乘的操作查询出来的结果就是笛卡尔积查询,如果左表有n条记录,右表有m条记录,笛卡尔积查询出有n*m条记录,其中往往包含了很多错误的数据,所以这种查询方式并不常用。select * from dept,emp;图2内连接查询 内连接查询:查询的是左边表和右边表都能找到对...原创 2018-04-18 10:28:56 · 13747 阅读 · 3 评论 -
MYSQL数据库优化
1. 优化sql语句和索引1) 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2) 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3) 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t...原创 2018-04-22 16:03:51 · 353 阅读 · 0 评论 -
JDBC
JDBC数据库驱动的概念、JDBC数据库厂商为了方便开发人员从程序中操作数据库而提供的一套jar包,通过导入这个jar包就可以调用其中的方法操作数据库,这样的jar包就叫做数据库驱动。JDBC是sun定义的一套标准,本质上是一大堆的操作数据库的接口,所有数据库厂商为java设计的数据库驱动都实现过这套接口,这样一来统一了不同数据库驱动的方法,开发人员只需要学习JDBC就会使用任意数据库驱动了。六个...原创 2018-04-18 20:07:41 · 204 阅读 · 0 评论 -
SQL注入攻击
SQL注入攻击: 由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字(‘#,‘or‘1)改变sql语句的语义,从而执行一些特殊的操作,这样的攻击方式就叫做sql注入攻击 PreparedStatement利用预编译(先传递SQL语句的主干)的机制将sql语句的...原创 2018-04-18 20:35:58 · 261 阅读 · 0 评论 -
事务四大特性
事务的概念:事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成.(举个例子,A给B转账,转100元。A账户减去100,B账户加上100。要么全部转账成功,要么失败,不可能一方转账了,一方没有收到)事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务.(一条SQL语句后,就会自动提交) 如果需要自己控制事务也可以通过如下命令开启/提交/回滚事务:starttra...原创 2018-04-19 15:18:10 · 351 阅读 · 0 评论 -
数据库四大隔离级别
隔离性:将数据库设计成单线程的数据库,可以防止所有的线程安全问题,自然就保证了隔离性.但是如果数据库设计成这样,那么效率就会极其低下.数据库在想不保证隔离性,可能会发生的情况:如果是两个线程并发修改,一定会互相捣乱,这时必须利用锁机制防止多个线程的并发修改。如果两个线程并发查询,没有线程安全问题。如果两个线程一个修改,一个查询,就会导致脏读,不可重复读,虚读(幻读)。具体想做什么级别的控制,数据库...原创 2018-04-19 15:19:08 · 5527 阅读 · 0 评论 -
乐观锁悲观锁
更新丢失问题:(serialize级别也会发生这个问题,给某账户汇款100元,现在该账户状态为0,表示还没有汇款。A和B两个线程同时查询,看到的状态字段结果都是0,A和B都以为还没有给该账户打钱。接着A开始汇款100元。等A修改完了,B因为根据前的查询的状态结果,是0,也开始汇款,会发生覆盖问题。结果汇款200元。)两个线程基于同一个查询结果进行修改,后修改的人会将先修改人的修改覆盖掉.悲观锁(并...原创 2018-04-19 16:15:44 · 206 阅读 · 0 评论 -
数据库索引含义,优点缺点,使用原则
索引1. 索引是什么?索引(Index)是帮助数据库高效获取数据的数据结构。举个例子,有一个数据库表User。假设现在要查询name为Lily的的人员,如果没有索引,数据库不得不查询user表中的每一行并确定这一样的name是否为Lily。由于我们想要得到每一个名字为Lily的雇员信息,在查询到第一个符合条件的行后,不能停止查询,因为可能还有其他符合条件的行。所以,必须一行一行的查找直到最后一行-...原创 2018-04-19 17:41:32 · 1893 阅读 · 0 评论 -
Redis 和 MySQL数据一致
1.MySQL和Redis处理不同类型的数据读请求:首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。写请求:先删除缓存,在更新数据库。如果删除缓存失败,那就不要更新数据库,如果说删除缓存成功,而更新数据库失败,那查询的时候只是从数据库里查了旧的数据而已,这样就能保持数据库与缓存的一致性。2.高并发情况下高并发情况下,可能会出现数据不一致的...原创 2018-07-31 16:31:39 · 1194 阅读 · 0 评论