![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
One-Direction
这个作者很懒,什么都没留下…
展开
-
深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
概念和区别SELECT ... LOCK IN SHARE MODE走的是IS锁(意向共享锁),即在符合条件的rows上都加了共享锁,这样的话,其他session可以读取这些记录,也可以继续添加IS锁,但是无法修改这些记录直到你这个加锁的session执行完成(否则直接锁等待超时)。SELECT ... FOR UPDATE走的是IX锁(意向排它锁),即在符合条件的rows上都加了排它锁,其他session也就无法在这些记录上添加任何的S锁或X锁。如果不存在一致性非锁定读的话,那么其他session是无转载 2020-09-29 16:49:16 · 207 阅读 · 0 评论 -
一致性非锁定读和一致性锁定读
一致性的非锁定读在默认配置下innodb的隔离级别是repeatable read,innodb的select操作使用的是一致性非锁定读一致性的非锁定行读(consistent nonlocking read,简称CNR) 是指InnoDB存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中运行的数据。如果读取的行正在执行delete、update操作,这时读取操作不会因此而会等待行上锁的释放,相反,InnoDB存储引擎会去读取行的一个快照数据。之所以称为非锁定转载 2020-09-28 17:59:31 · 247 阅读 · 0 评论 -
Mysql的四种引擎介绍
MyISAM不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表支持3种不同的存储格式,分别是:静态表;动态表;压缩表静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)ps:在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。动态表:记录不是固定长度的,这样存转载 2020-09-28 17:31:51 · 247 阅读 · 1 评论 -
InnoDB解决幻读方法和原理
首先说结论,在RR的隔离级别下,Innodb使用MVCC和next-key locks解决幻读,MVCC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。读取历史数据的方式,我们叫它快照读 (snapshot read),而读取数据库当前版本数据的方式,叫当前读 (current read)。当前读所谓当前读,指的是加锁的select(S或者X), update, delete等语句。在RR的事务隔离级别下,数据库会使用next-key locks来锁住本条记.原创 2020-09-28 16:52:06 · 307 阅读 · 0 评论 -
什么叫持久化? 为什么持久化?
1.什么是持久化?孙卫琴的《精通Hibernate:Java对象持久化技术详解》中有如下的解释,感觉还是比较完整的。摘抄如下:狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中广义的理解,“持久化”包括和数据库相关的各种操作。保存:把域对象永久保存到数据库。更新:更新数据库中域对象的状态。删除:从数据库中删除一个域对象。加载:根据特定的OID,把一个域对象从数据库加载到内存。查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。转载 2020-07-15 00:05:46 · 596 阅读 · 0 评论 -
OID是什么意思
OID是什么在数据库设计中,需要为每一条记录设定key值。key值加上表名,形成了唯一的标志。在面向对象中,唯一标志的方式是使用OID(Object ID),OID用于标识每一个对象。正如ORMapping中的描述的那样,OID的唯一性有三种,具体类中对象标识唯一,类层次中对象标识唯一,所有类的对象标识均唯一。所以OID的唯一性策略可以和映射机制结合起来。在实际中,一般我们都把OID作为数据库中的主键。简单一点说,OID就是对象的唯一标识。如何存储OIDOID有几种存储机制:一种是使用自增转载 2020-07-14 23:38:56 · 15832 阅读 · 0 评论 -
理解数据库的事务,ACID,CAP和一致性
什么是事务事务是指由一系列数据库操作组成的一个完整的逻辑过程,这个过程中的所有操作要么都成功,要么都不成功。比如:常见的例子就是银行转账的例子,一次转账操作会包含多个数据库操作,而这些数据库操作需要放到一个事务当中,保证其要么都成功,要么都不成功。什么是ACIDACID是事务的四个特性,指的是atomicity,原子性;consistency,一致性;isolation,隔离性;durabi...转载 2020-05-16 23:51:03 · 336 阅读 · 0 评论 -
21条最佳MySQL性能优化
1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例://...转载 2020-05-09 00:01:14 · 309 阅读 · 1 评论 -
CAP原理详解
一、CAP原理介绍先简单介绍一下CAP原理是什么:C:Consistency即一致性,访问所有的节点得到的数据应该是一样的。注意,这里的一致性指的是强一致性,也就是数据更新完,访问任何节点看到的数据完全一致,要和弱一致性,最终一致性区分开来。A:Availability即可用性,所有的节点都保持高可用性。注意,这里的高可用还包括不能出现延迟,比如如果节点B由于等待数据同步而阻塞请求,那么...转载 2020-05-02 00:42:19 · 445 阅读 · 1 评论 -
MySQL 性能优化技巧
文章目录一、优化思路二、查看 MySQL 服务器运行的状态值三、获取需要优化的 SQL 语句3.1 方式一:查看运行的线程3.2 方式二:开启慢查询日志四、分析 SQL 语句4.1 方式一:explain4.2 方式二:profiling4.2.1 查看 profile 开启情况4.2.2 启用 profile4.2.3 查看执行的 SQL 列表4.2.4 查询指定 ID 的执行详细信息4.2.5...转载 2020-04-29 20:20:35 · 178 阅读 · 0 评论 -
SQL连接类型和用法
SQL中的连接可以分为内连接,外连接,以及交叉连接 。1. 交叉连接CROSS JOIN如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积。举例:下列A、B、C 执行结果相同,但是效率不一样:A:SELECT * FROM table1 CROSS JOIN table2B:SELECT * FROM table1,table2...转载 2020-04-17 22:47:03 · 222 阅读 · 0 评论 -
SQL语言的分类
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。1. 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2. 数据操纵语言DML数据操纵语言DML主要有三种形式:...转载 2020-04-16 00:39:45 · 155 阅读 · 0 评论 -
MySQL事务
概念MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务...原创 2020-03-28 10:17:09 · 182 阅读 · 0 评论 -
第一范式,第二范式,第三范式,BCNF范式理解
第一范式定义: 属于第一范式关系的所有属性都不可再分,即数据项不可分。理解: 第一范式强调数据表的原子性,是其他范式的基础。日常生活中仅用第一范式来规范表格是远远不够的,依然会存在数据冗余过大、删除异常、插入异常、修改异常的问题,此时就需要引入规范化概念,将其转化得更加标准化,减少数据依赖。规范化: 一个低一级的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合,这个过程叫...转载 2020-03-27 14:59:13 · 6267 阅读 · 0 评论 -
MySQL及SQL注入
SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理防止SQL注入,我们需要注意以下几个要点:1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换...原创 2020-03-26 13:38:04 · 118 阅读 · 0 评论 -
web 本地存储 (localStorage、sessionStorage)
web 本地存储 (localStorage、sessionStorage)说明对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStoragesessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载localSt...转载 2019-08-08 15:54:57 · 104 阅读 · 0 评论 -
Query Cache
QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个Cache都是以SQL文本作为key来存的。1. 原理QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个Cache都是以SQL文本作为key来存的...转载 2019-06-08 15:40:05 · 146 阅读 · 0 评论 -
MQ - 消息队列中点对点模型与发布/订阅模式的区别
背景知识JMS一个在 Java标准化组织(JCP)内开发的标准(代号JSR 914)。2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1.1.Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通...转载 2019-06-08 15:52:31 · 1663 阅读 · 0 评论 -
BDB
BDB综述BDB最初开发的目的是以新的HASH訪问算法来取代旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的ndbm,GNU项目的gdbm),BDB的第一个发行版在1991年出现,当时还包括了B+树数据訪问算法。在1992年,BSD UNIX第4.4发行版中包括了BDB1.85版。基本上觉得这是BDB的第一个正式版。在1996年中期,Sleepycat软件...转载 2019-06-10 10:10:34 · 1073 阅读 · 0 评论 -
行-页-表级锁
综述页级:引擎 BDB。直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。行级:引擎 INNODB , 单独的一行记录加锁表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻...转载 2019-06-10 10:40:53 · 132 阅读 · 0 评论 -
Redis-Memcache-MongoDb
Redis相比memcached有哪些优势?(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型(2) redis的速度比memcached快很多(3) redis可以持久化数据(4) Redis支持数据的备份,即master-slave模式的数据备份。(5) 使用底层模型不同它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。R...转载 2019-06-10 10:56:37 · 99 阅读 · 0 评论 -
人才招聘系统
文章目录一、 需求分析二、 概念结构设计三、 逻辑结构设计四、 物理结构设计五、 数据库实施六、 数据库运行和维护七 源代码和报告下载一、 需求分析基本的数据信息企业信息企业编号,企业名称,用户名,密码,企业地址,邮箱用户信息个人用户编号,用户名,密码,姓名,邮箱新闻信息新闻编号,新闻标题,新闻内容,新闻图片,新闻来源,发布时间,点击次数招聘信息招聘信息编号,企业编...原创 2019-06-20 19:37:12 · 6081 阅读 · 6 评论 -
Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.toString()' on a null object
最近在使用MAMP的MySql的时候,发现通过POST方法得到的JSON对象为空,百思不得其解,通过分析发现是数据库连接就出错,导致通过API取得的数据为空,从而导致JSON结果集为空,发现MySql的默认用户名和密码都是root.先将mysql目录下的bin加入系统环境变量:博主的目录为:E:\MAMP\bin\mysql\bin打开cmd执行如果数据库没有密码: my...原创 2019-07-06 15:09:51 · 2867 阅读 · 0 评论 -
PHP与Mysql
文章目录创建数据库和表连接数据库操作数据库读取数据插入数据插入多条数据更新数据删除数据预处理语句where子句排序实践创建数据库和表CREATE DATABASE 语句用于在Mysql中创建数据库CREATE TABLE语句用于创建Mysql表字段限制条件:- NOT NULL 值不能为空- DEFAULT value 设置默认值- UNSIGNED 使用无符号...原创 2019-07-09 21:30:23 · 147 阅读 · 0 评论 -
AJAX
文章目录简介工作原理创建 XMLHttpRequest 对象向服务器发送请求服务器响应onreadystatechange 事件使用回调函数AJAX ASP/PHP 实例AJAX 数据库实例AJAX XML 实例Xmlhttp状态码简介AJAX=Asynchronous Javascript And Xml用于创建快速动态网页的技术通过在后台与服务器进行少量数据交换,AJAX 可以使...原创 2019-07-10 14:43:02 · 170 阅读 · 0 评论 -
Invalid default value for 'updated_at'
最近在Mysql的query语句中出现了这样的错误Invalid default value for ‘updated_at’解决方法如下:执行SQL语句:show variables like 'sql_mode';如何发现query结果中有如下两个modes:NO_ZERO_IN_DATE和NO_ZERO_DATE则移除这两个modes:set set session s...原创 2019-07-06 11:35:56 · 2187 阅读 · 0 评论 -
MySql-problems
Uncaught Error: Call to undefined function mysql_select_db()MySql在最新的版本应该采用mysqli或者pod,所以正确的用法因该是mysqli_select_db($link,$database);mysqli_select_db() expects parameter 1 to be mysqli, string g...原创 2019-07-07 10:12:42 · 194 阅读 · 0 评论 -
SQL注入
如何防范SQL注入使用PDO预处理的方式,也就是一个萝卜一个坑。预处理。将输入的数值,绑定到参数,也就是放进坑里(一个萝卜一个坑,一个参数一个坑),这样输入的内容(外部的内容)就都落到坑里了,在每个坑里处理每个参数,这样就安全了,不会出现SQL注入。使用htmlspecialchars()等函数进行转义。还可以对输入类型进行检测,类型转换。相关文章:https://jueji...转载 2019-08-08 14:37:52 · 202 阅读 · 0 评论 -
MyISAM和InnoDB
MyISAM1. 什么是mylSAM引擎MyISAM引擎是MySQL关系数据库管理系统的默认存储引擎(MySQL5.5版本以前)。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本的MySQL中,InnoDB引擎由于其对事物参照完整性,以及更高的并发性等优点开始逐步的取代MyISAM引擎。小结:事物参照完整性可理解为数据的一致性。2. mylSAM引擎的特点:1、...转载 2019-06-08 14:44:39 · 149 阅读 · 0 评论