mysql数据库

MySQL 事务的隔离级别

偶尔善良 提交于 2020-03-12 02:40:39
1. 事务的ACID 事务的ACID是指事务拥有的4个特性的首字母组合:atomicity(原子性), consistency(一致性), isolation(隔离性)和durability(持久性)。 ①atomicity(原子性) :表示事务是一个不可分割的工作单元,要么在提交事务后所有更改成功,要么在回滚事务时撤消所有更改,不可以只执行其中的一部分操作。 ②consistency(一致性) :在每次提交、回滚之后或正在进行的事务,数据库始终保持一致状态。如正在跨多个表更新相关数据,则查询看到的将是所有旧值或所有新值,而不是新值和旧值的混合。 ③isolation(隔离性) :事务在进行过程中相互隔离,他们不能互相干扰,也不能看到彼此的未提交数据。 但可以通过修改隔离级别,查看其他事务正在处理的数据。 ④durability(持久性) :事务提交成功后,该事务所做的更改将会保存在数据库中。 2. 并发读取数据的问题 当事务读取另一个事务已修改的数据时,可能会发生dirty read(脏读)、non-repeatable read(不可重复读)和phantom read(幻读)之类的现象。 ①dirty read(脏读) :当前事务读取了另一个事务已更新但尚未提交的数据。后果就是另一个事务回滚了,此数据就为错误的无效数据。 ②non-repeatable read(不可重复读)

JDBC连接mysql数据库并进行简单操作

╄→гoц情女王★ 提交于 2020-03-12 02:01:26
刚刚开始学,如有错误请多指教。以下都是基于windows10平台的教程 第一步 下载mysql对应的JDBC驱动 链接https://dev.mysql.com/downloads/connector/j/,windows选择这个版本就好了,意思是与平台无关。驱动版本与mysql版本不需要对应 下载好之后,位置随便,自己记得就好,解压即可。 第二步 将下载好的JDBC驱动添加到包里 这时候你需要知道你刚刚解压之后的文件里一个jar包的位置,然后将其添加到对应的包下,我用的是eclipse,我截图演示 然后选择对应的jar包就可以了 第三步 撸代码 以下算是一个比较标准的基本操作代码,我用的是自己之前建立的demo数据库中的student表 1 package standardDemo; 2 //这是一个工具类 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public final class JdbcUtils { 10 //jdbc:mysql://链接地址:端口号/数据库名?serverTimezone=GMT

JumpServer本地部署

二次信任 提交于 2020-03-12 01:50:44
CentOS 7.7部署Jumpserver 系统: CentOS 7 IP: 172.16.75.1 目录: /opt 数据库: mariadb 代理: nginx 1.开始安装 防火墙 与 selinux 设置说明, 如果已经关闭了 防火墙 和 Selinux 的用户请跳过设置 systemctl stop firewalld setenfore 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config yum update -y #安装依赖包 yum -y install wget gcc epel-release git 安装 Redis, JumpServer 使用 Redis 做 cache 和 celery broke yum -y install redis systemctl enable redis systemctl start redis 安装mysql5.7 wget -nc http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm rpm -ivh mysql-community-release-el6-5.noarch.rpm yum -y install mysql-community

MySQL与Oracle 差异比较之二基本语法

青春壹個敷衍的年華 提交于 2020-03-11 17:59:29
基本语法 编号 类别 ORACLE MYSQL 注释 1 变量的声明方式不同 li_index NUMBER := 0 DECLARE li_index INTEGER DEFAULT 0 1. mysql 使用DECLARE定义局部变量. 定义变量语法为: DECLARE var_name[,...] type [DEFAULT value] 要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。 2 变量的赋值方式不同 lv_inputstr := iv_inputstr SET lv_inputstr = iv_inputstr 1. oracle变量赋值使用:= mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用"=". 3 跳出(退出)语句不同 EXIT; LEAVE procedure name; 1. oracle: 如果exit语句在循环中就退出当前循环.如果exit语句不再循环中,就退出当前过程或方法. Mysql: 如果leave语句后面跟的是存储过程名,则退出当前存储过程. 如果leave语句后面跟的是lable名. 则退出当前lable. while 条件 loop exit; end loop; label_name:while 条件 do

MySQL优化(6):分表和读写分离

╄→尐↘猪︶ㄣ 提交于 2020-03-11 17:28:32
分表 通常指:通过应用程序层,将数据划分到不同的表中进行存储 对比分区,分区是在服务器层完成的分区算法 分表会导致客户端明显的改变,在服务器端出现结构相同的多张表,甚至可以把多张表分到不同的服务器上 以账单表为例:数据库可能会有这样的情况 create table bill201710( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); create table bill201711( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); create table bill201712( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); 而是又Java等代码进行处理,区分应该选择哪一张表,根据传递的时间参数进行划分 实际中,有一个比较麻烦的问题, 主键ID的问题 ,理论上ID是不可以重复的 解决方案: (1)代码层面,手动做一个自增ID,不稳妥

mysql错误:mysql_native_password

你说的曾经没有我的故事 提交于 2020-03-11 16:55:50
在使用 Navicat for Mysql连接mysql 8.0时会报如下错误: mysql > authentication plugin 'caching_sha2_password' cannot be loaded ; mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式; 我们可可以查看mysql 数据库中user表的 plugin字段; mysql > select host , user , plugin from user ; 可以使用命令将他修改成mysql_native_password加密模式 mysql > updates user set plugin = 'mysql_native_password' where user = 'root' ; mysql > select host , user , plugin from user ; 链接成功 来源: CSDN 作者: 菜霸OX瓦 链接: https://blog.csdn.net/qq_43395428/article/details/104795256

MySQL优化(5):分区

时间秒杀一切 提交于 2020-03-11 16:37:12
分区: 分区也是MySQL优化中的一个重要方式 将一个表中的数据和索引,分散到不同的文件中进行存储 通常情况下,一个表,对应一组数据和索引文件,一个表的数据和索引集中存储在这组文件中 当一个表出现了大量的记录时,可以将其分布到不同的数据和索引文件中进行存储 Innodb来说,一个表对应多个ibd文件 MyISAM来说,一个表对应多个myi,myd文件 分布之后,每个文件中包含的记录数量显著减少,保证单独文件的执行效率 最常用的分区语法是:使用ID,将数据分布到多个分区中 在设计表的时候使用partition选项完成分区,需要提供分区算法和算法参数,完成分区操作 create table [table-name]( id int unsigned auto_increment primary key, subject varchar(255), content text )charset utf8 engine innodb partition by hash(id) partitions 10 ; 正常的建表语句,最后一行表示利用ID字段,使用HASH算法,将数据分布到十个分区内 建表成功之后,可以发现数据库中虽然只是一张表,但是文件夹中会有十个ibd文件,一个frm文件(结构文件)和一个par文件(分区结构文件) 分区成功后:客户端和以前没有任何区别

mysql数据权限的分配

给你一囗甜甜゛ 提交于 2020-03-11 13:38:59
在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库。缺省状态下,mysql的用户没有远程访问的权限。 下面介绍两种方法,解决这一问题。 1、改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -p mysql> use mysql; mysql> update user set host = '%' where user = 'root'; mysql> select host, user from user; 2、授权法 在安装mysql的机器上运行: 1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器 2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION //赋予任何主机访问数据的权限 例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@ '%'

mysql中插入数据时Duplicate entry ' value' for key 'PRIMARY'的解决方案

自闭症网瘾萝莉.ら 提交于 2020-03-11 13:08:00
该问题是插入数据表中遇到键重复 我开始以为是我的mysql版本问题,因为在开始导入一个sql文件时就是因为版本问题,5.5与5.7冲突,需要将(0)改为空。所以第一想到的是换版本。 后来上网查,确认是主建重复的问题。 我认为一共两种情况。 1、能肯定的是主键的数值重复了,这样的话可以通过设置主键自增长,在navicat中,可以在数据库手动将相关表设置ID为自增长。 2、还有一种情况是你导入的库重复了,这时候需要delete相关语句,或者直接删除重复的表,我的情况是数据库表更新了,但我重新粘贴过去时没有覆盖,导致重复。 来源: CSDN 作者: sand_wich 链接: https://blog.csdn.net/sand_wich/article/details/104793658

在国产操作系统(银河麒麟)上跑国外开源即时通讯Openfire

泪湿孤枕 提交于 2020-03-11 13:00:34
1)较重要的文件: openfire官网下载的源码; maven环境配好 数据库也要安装,我的是mysql,最好装一个mysql的可视化工具。 (2) 第一步:解压压缩包到当前文件夹Openfire;打开终端,输入mvn verify,也可以只pom部分代码; 第二步:进入到 ...Openfire-master/distribution/target/distribution-base/bin下,运行openfire.sh 出现这样就表示安装成功了 第四步:本地浏览器输入127.0.0.1:9090就可以开始部署服务器了,或者远程输入你运行openfire的机器的IP地址等信息 来源: CSDN 作者: 追风筝的Coder 链接: https://blog.csdn.net/EscapePlan/article/details/104792084