数据库事务

MySQL 20个经典面试题

我是研究僧i 提交于 2019-12-22 03:04:11
1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 3. 从:sql执行线程——执行relay log中的语句; 2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同; 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。 (2)、innodb引擎的4大特性 插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead) (3)、2者selectcount(*)哪个更快,为什么 myisam更快,因为myisam内部维护了一个计数器,可以直接调取。 3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义 (1)、varchar与char的区别 char是一种固定长度的类型

MySQL面试题收集

走远了吗. 提交于 2019-12-22 03:03:54
1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 3. 从:sql执行线程——执行relay log中的语句; 2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同; 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。 (2)、innodb引擎的4大特性 插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead) (3)、2者selectcount(*)哪个更快,为什么 myisam更快,因为myisam内部维护了一个计数器,可以直接调取。 3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义 (1)、varchar与char的区别 char是一种固定长度的类型

mysql基本面试题

爱⌒轻易说出口 提交于 2019-12-22 03:03:34
1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 3. 从:sql执行线程——执行relay log中的语句; 2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同; 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。 (2)、innodb引擎的4大特性 插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead) (3)、2者selectcount(*)哪个更快,为什么 myisam更快,因为myisam内部维护了一个计数器,可以直接调取。 3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义 (1)、varchar与char的区别 char是一种固定长度的类型

Spring中的事务操作

↘锁芯ラ 提交于 2019-12-22 00:52:00
事务的特性 原子性:强调事务的不可分割。 一致性:事务的执行的前后数据的完整性保持一致。 隔离性:一个事务执行的过程中,不应该受到其他事务的干扰。 持久性:事务一旦结束,数据就持久化到数据库。 如果不考虑隔离性会引发的安全性问题 脏读:一个事务读到了另一个事务的未提交的数据。 不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致多次查询的结果不一致。 虚读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询的结果不一致。 解决读问题:设置事务的隔离级别 未提交读:脏读、不可重复读和虚读都有可能发生。 已提交读:避免脏读,但是不可重复读和虚读有可能发生。 可重复读:避免脏读和不可重复读,但是虚读有可能发生。 串行化的:避免以上所有读问题。 Spring的声明式事务管理方式 Spring进行声明式事务配置的方式有两种: 基于xml配置文件方式 基于注解方式 但无论使用什么方式进行Spring的事务操作,首先要配置一个事务管理器。 搭建转账的环境 第一步,创建数据库表。 DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `id` int(11) DEFAULT NULL, `username` varchar(100) DEFAULT NULL, `salary` int(11)

关于spring的事务传播特性

廉价感情. 提交于 2019-12-22 00:06:18
我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档) 在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。 如果你在你的Service层的这个方法中,除了调用了Dao层的方法之外,还调用了本类的其他的Service方法,那么在调用其他的 Service方法的时候,这个事务是怎么规定的呢,我必须保证我在我方法里掉用的这个方法与我本身的方法处在同一个事务中,否则如果保证事物的一致性。事务的传播特性就是解决这个问题的,“事务是会传播的”在Spring中有针对传播特性的多种配置我们大多数情况下只用其中的一种:PROPGATION_REQUIRED:这个配置项的意思是说当我调用service层的方法的时候开启一个事务(具体调用那一层的方法开始创建事务,要看你的aop的配置),那么在调用这个service层里面的其他的方法的时候,如果当前方法产生了事务就用当前方法产生的事务,否则就创建一个新的事务。这个工作使由Spring来帮助我们完成的。

UML中的事务

半城伤御伤魂 提交于 2019-12-21 15:14:22
前言 什么是UML,它是如何定义的呢?   UML是一种面向对象的建模语言,它的作用是帮助用户对软件系统进行面向对象的描述和建模,它可以描述整个软件从需求分析直到实现和测试的开发全过程。 组成: UML中的事务: 事务分为四类:结构、行为、组织、辅助等事务。 结构事务:有以下七种。 一、类(Class)  类是具有相同属性、相同方法、相同语义和相同关系的一组对象集合。一个类可以实现一个或多个接口。UML图中类又包括类名、属性和方法的矩形来表示。如下图所示: 二、接口(Interface)  接口是指类或组件所提供的、可以完成特定功能的一组操作的集合。接口描述了类或组件的对外的、可见的动作。通常一个类实现一个或多个接口。在UML图中,接口通常用一个圆形来表示。 三、用例(Use Case)   用例定义了系统执行的一组操作,对特定的用户产生可以观察的结果。用例通常用一个实线椭圆表示。 四、协作(Collaboration)  协作定义了交互的操作,表示一些角色和其他元素一起工作,提供一些合作的动作。一个给定的类可能是几个协作的组成部分,这些协作代表构成系统的模式的实现。通常用一个虚线椭圆表示。 五、活动类(Active Class)  活动类是指类对象有一个或多个线程或进程的类。活动类的表示方法和普通类的表示方法相似,也是用一个矩形表示,只是最外面的边框使用的是粗线。 六、组件

Sqlite c/c++ api 学习

天大地大妈咪最大 提交于 2019-12-21 13:05:14
Sqlite是我最喜欢使用的文件数据库,它小巧、方便、速度快、支持大部分标准sql语句、开源、免费 .. .. .. 优点太多了。自从认识了她之后,我就将Access打入了冷宫,发誓以后再也不用Access了。我们可以到Sqlite的 官方网站 下 载Sqlite的源代码,编译后的结果只有200多K,太小巧,太卡哇依了。如果嫌自己手动编译麻烦,也可以直接从官网下载二进制的可执行文件或者动态链 接库。可执行文件可以用命令行的方式来创建、操作数据库;动态链接库则可以用程序来操作Sqlite数据库。今天我就来介绍一下如何使用c/c++来操作 Sqlite吧~~~ 准备工作 我这里使用的sqlite版本是3.x,所以首先从官网下载动态链接库 sqlite3.dll ;然后再下载api头文件 sqlite3.h 。在Code::Block中新建一个C++的控制台项目,添加对sqlite3.dll的引用,同时将sqlite3.h添加到项目中。我这里还使用了一个工具: SqliteSpy ,用于对数据库进行可视化的操作。 开始使用API 下面就开始使用API吧~。Sqlite的所有api,可以在 这里 查询到。 sqlite3_open sqlite3_exec sqlite3_close 看到这些函数,我相信你大概能猜出这些函数的功能。sqlite3_open用于打开一个数据库

sqlserver事务隔离

前提是你 提交于 2019-12-21 12:12:12
事务是一个工作单元,可能包含查询和修改数据以及修改数据定义等多个活动。我们可以显式或隐式的定义事务边界。可以使用BEGIN TRAN或者BEGIN TRANSACTION语句显式的定义事务的开始。如果希望提交事务,可以使用COMMIT TRAN语句显式的定义事务结束。如果不希望提交事务(即要撤销更改),可以使用ROLLBACK TRAN或者ROLLBACK TRANSACTION语句-摘抄自SQL Server 2012基础教程。 如果不显式的标记事务的边界,默认情况下,SQL Server将把每个单独语句作为一个事务,换句话说,默认情况下,每个单独语句结束后SQL Server自动提交事务。 说到事务就联想到并发,为了解决事务中的并发我们则不得不讨论下锁,所以接下来我们首先熟悉一下锁的模式-排他锁和共享锁。 先看看下面的试验,先开始一个事务处理,这个事务不提交也不回滚,然后另外在打开一个窗口查询数据。 在上面的事务没有提交也没有回滚的情况下,如果另一个程序在执行查询,那么就会阻塞,如果没有设置查询超时,就会一直等待。 原因:当事务会话对表进行修改(增删改)时,事务会请求数据资源的一个排他锁,这个锁直到事务完成(提交或者回滚)才会被取消。当读取数据时需要获取该资源上的共享锁,但是排他锁和共享锁不能兼容,此时会导致查询阻塞不得不进行等待。 就上面的试验,第一个事务拥有排它锁

jdbc 事务

一曲冷凌霜 提交于 2019-12-21 07:22:44
一、什么是事务   事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换成另一种状态。   事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、 一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写事务必须服从ISO/IEC所制定的ACID原 则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩 写。 原子性 。即不可分割性,事务要么全部被执行,要么就全部不被执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。 一致性或可串性 。事务的执行使得数据库从一种正确状态转换成另一种正确状态。 隔离性 。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应显示给任何其他事务。 持久性 。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。      运行嵌入式SQL应用程序或脚本,在可执行SQL语句第一次执行时

软件架构学习小结

让人想犯罪 __ 提交于 2019-12-21 07:17:39
软件架构 设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从 架构师职责、 软件架构定义、设计架构、评估架构、架构管理 等方面来描述了解软件架构的含义和怎样设计软件架构。 一、软件架构师的职责 架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师( J2EE 架构师、 .NET 架构师等)、系统架构师。 1 、架构师的职责主要体现 架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,架构师的职责主要体现在以下几方面: 1 )、负责公司系统的架构设计、研发工作。 2 )、承担从业务向技术转换的桥梁作用。 3 )、协助项目经理制定项目计划和控制项目进度。 4 )、负责辅助并指导系统分析开展设计工作。 5 )、负责组织技术研究和攻关工作。 6 )、负责组织和管理公司内部的技术培训工作。 7 )、负责组织及带领公司内部员工研究与项目相关的新技术。 8 )、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。 9 )、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。 10 )、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。 2 、构架设计师必须具备的技能 经验:既包括在问题领域的经验