mysql数据库

mysql事务隔离的一点理解

你说的曾经没有我的故事 提交于 2020-01-08 17:34:15
前言 先介绍一下事务的概念 事务(Transaction) 就是数据库管理的一个逻辑单位,由一个有效的数据库操作序列构成。 事物ACID特性 原子性(Atomicity):事务作为一个整体被执行,要么全部成功执行,要么全部失败 一致性(Consistency):指的是逻辑上的一致性,即所有操作是符合现实当中的期望的 隔离性(Isolation):多个事务并发时,一个事务不应该影响其他事务的执行 持久性(Durability):被提交过的事务对数据库的修改应该永久保存在数据库中 通俗的理解,就是将一系列的数据库操作(增删改查)看做一个整体,要么所有操作都成功,要么都失败。 一、产生的问题 如果没有事务隔离的话,会发生以下的问题 1. 脏读 脏读 是指一个事务读取了另一个事务未提交的数据 2. 不可重复读 不可重复读 是指事务中多次读取,数据改变。 不可重复读和脏读的区别:不可重复读是事务A读取某行数据后,事务B插入了一行新数据并提交之后,事务A再去读数据,读到了修改后的数据集。 3. 幻读 幻读 是指事务多次读取,结果集数量改变。 上面还有点不清晰,借鉴一下别人的白话解释 幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。更为具体一些:select 某记录是否存在,不存在,准备插入此记录,但执行

matlab访问mysql

怎甘沉沦 提交于 2020-01-08 16:27:59
1、下载访问mysql的驱动【jar包】 2、将jar包放到matlab安装目录 3、修改环境变量 打开文件: 在末尾添加jar的路径: 4、重启matlab,测试 conn = database('784_src_data', 'root', 'zhuxaioyong1212', 'com.mysql.jdbc.Driver', 'jdbc:mysql://localhost:3306/784_src_data'); % 数据库名,用户名,密码,驱动,ip curs = exec(conn, 'select * from digital_phase_shifter_data'); curs = fetch(curs); data = curs.Data; disp(data); ABroken = cell2mat(data).'; close(conn); lwindows已测试成功,linux未测试 来源: https://www.cnblogs.com/judes/p/12167237.html

Mysql死锁

若如初见. 提交于 2020-01-08 16:11:01
mark下自己近期在电商开发中遇到的一个问题-数据库死锁及其排查过程。 先抛一个业务报错日志做为这次梳理的开始 上图是我接收到的错误报警,SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction,错误信息显示我们业务中有一条数据库操作遇到了死锁情况。接下来就开始我们的追查之旅。 1.执行“show engine innodb status”获取INNODB引擎当前信息( show engine innodb status 详细介绍 ) ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2017-01-04 09:25:17 7f553477d700 *** (1) TRANSACTION: TRANSACTION 124378994, ACTIVE 0.007 sec starting index read mysql tables in use 1, locked 1 LOCK WAIT 4 lock struct(s), heap size 1184, 8 row lock(s), undo log entries

mysql8.0开放远程登录

老子叫甜甜 提交于 2020-01-08 16:10:07
在网上查的是,出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 本机的链接是localhost,远程的需要将用户信息update一下,改为root@%的形式 我常用的是第二种方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更新一下用户的密码 FLUSH PRIVILEGES; #刷新权限 参考链接: https://blog.csdn.net/qq_36068954/article/details/80175755 安装 下载并安装MySQL官方的 Yum Repository [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community

MySQL索引的使用

感情迁移 提交于 2020-01-08 13:10:19
摘要:MySQL索引通常会提高查询的效率,但不恰当的使用会为数据库的内存和性能带来影响。 1.不要在列上使用函数或者运算,因为会导致全表扫描。 select * from news where year(time)>2017 可以改造为 select * from news where publish_time < '2017-01-01' 2.尽量避免使用!=或者not in 或者<>,会导致索引失效 3.尽量避免使用or来连接。 4.多个单列索引 MySQL只能使用一个索引,会从多个索引中选择一个,如果创建多个单列索引,只能使用其中的一个,推荐使用复合索引。 5.复合索引的最左前缀 复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。 select * from news where news_month = 1 此时,无法使用 new_idex(news_year, news_month) 索引,因为遵守“最左前缀”原则,在查询条件中没有使用复合索引的第一个字段,索引是不会被使用的。 6.范围查询会导致复合索引的右边失效 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。 这个时候,我们应该避免采用范围查询

mysql 行级锁问题

巧了我就是萌 提交于 2020-01-08 11:52:25
线上碰到存储过程死锁问题了,开始以为非主键查询 for update 会导致表锁,后来经过测试 innodb下for update索引生效的情况下 根据索引字段查询是行级锁, 会将整个结果集进行上锁,直到事务结束。 错误地方进行一些修正,一般情况的确是将索引的结果集进行上锁,但是由于表过大的情况,mysql为了性能自动优化将索引附近的结果集全部进行上锁。 具体实验过程可以看 https://blog.csdn.net/qq_31975227/article/details/103710018 ,自己做一遍也能实验出来。 但是存储过程死锁的问题还是没有解决,不过该存储过程只是进行内存统计数据的落库,所以不应该上锁。虽然程序是node调用,但是也不会出现执行顺序问题,如果出现了执行顺序问题加了行级锁也是没有用的,又不是在源数据进行加减等计算操作,计算操作都在内存完成了,最后只进行了落库操作。( 来至个人的吐槽,我没办法说法领导, 后来和领导沟通说明白了问题) 死锁的问题通过分析死锁日志文件解决了,由于上面一块错误的认识。一直认为两个非唯一索引可以命中单条记录,其实mysql为了性能命中了多条。 一个简单的update语句,update ? where id1=1 and id2=2 id1和id2 都是非唯一索引,这时有的语句会对因为优化导致上锁其他索引周边的数据条目

ERROR 1044 (42000) ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'

早过忘川 提交于 2020-01-08 10:25:39
ERROR: Access denied for user 'root'@'localhost' (using password: NO) 发现: mysql -u root@localhost -p 成功 mysql -u root -p 失败 mysql> SELECT user, host FROM mysql.user; ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user' mysql> SELECT USER(), CURRENT_USER(); +--------------------------+----------------+ | USER() | CURRENT_USER() | +--------------------------+----------------+ | root@localhost@localhost | @localhost | +--------------------------+----------------+ 1 row in set (0.01 sec) 原因: root 设置了密码,需要把root的密码清掉。 以下可以解决问题(方案一): 1) service mysqld stop 2) mysqld_safe

Servlet读取MySQL数据库并在前端调用

橙三吉。 提交于 2020-01-08 09:34:02
需要实现的功能为在前端点击Cesium下的3dtilse格式的文件并单体化,获取模型的ID,通过ajax将ID传送给servlet,然后servlet进行数据库查询,并将数据传给前端。 1.对于MySQL数据库的安装与配置不再赘述,记住设置的名称和密码就好,本文使用Navicat for MySQL连接MySQL数据库进行可视化操作,设置好连接名并输入密码,点击连接测试,显示连接成功点击确定进入操作界面。 新建连接 2.首先新建数据库名称为test,新建数据表或者右键表->导入向导,直接导入exce、CSV等格式的文件。 导入向导 3.安装JDK,并配置环境变量,不再赘述。 4.下载Tomcat与安装配置,不再赘述。 5.下载eclipse并运行,新建Dynamic Web Project。 新建Dynamic Web Project 勾选生成web.xml 6.右击项目,Build Path->Configer Build Path,点击Libraries栏,Add External Jars将servlet-api.jar导入 Web App Libraries下,也就是项目下WebContent文件夹下的WEB-INF文件夹的lib文件夹里,需要导入如下的jar包 jar包 7.右击Java Resources下的src,新建Package,然后右击package

部署Zabbix监控软件

≯℡__Kan透↙ 提交于 2020-01-08 07:44:46
监控对于运维来说,相当重要,可以称为是运维人员的眼。一个良好的监控系统可以帮助运维人员快速的找到问题的根源,减少宕机的时间,提高故障处理速度。由此就看可以看出,身为运维人员,掌握常见的监控软件的使用是最基本的技能之一。 一、Zabbix概述 1)Zabbix简介 Zabbix是一个基于web界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网后用户中使用最广的监控软件,大概85%以上企业在使用zabbix做监控解决方案。Zabbix的入门容易、上手简单,功能强大并且开源免费,zabbix易于管理和配置,能生成比较漂亮的数据图,其自动发现功能大大减轻日常管理的工作量,丰富的数据采集方式和API接口可以让用户灵活进行数据采集,而分布式系统架构可以支持监控更多的设备,理论上,通过zabbix提供的插件式架构,可以满足企业的任何需求(部分插件功能会收费)。 2)常用的监控软件的优、缺点 常见的监控工具有:Zabbix、nagios、cacti,本次博文只简单介绍这三种,各自的优、缺点如下: (1)Zaabix 优点: 1)支持多平台的企业级分布式开源监控软件(redhat、centos、Ubuntu、Debian); 2)安装部署简单,多种数据采集插件灵活集成; 3)功能强大、可实现复杂多条件告警; 4)自带画图功能,得到的数据可以绘制成图形,以图像更直观的展示

Mysql 事务

巧了我就是萌 提交于 2020-01-08 06:08:41
事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作巡逻单元,在数据库系统上执行并发操作时,事务时最小的控制单元 适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券公司交易系统等等 通过事务的整体性以保证数据的一致性 事务的ACID特点 原子性(Atomicity) 事务是一个完整的操作,事务的各元素是不可分的(原子的) 事务中的所有元素必须作为一个整体提交或回滚 如果事务中的任何元素失败,则整个事务将失败 一致性(Consistency) 当事务完成时,数据必须处于一致状态:在事务开始之前,数据库中存储的数据处于一致状态;在正在进行的事务时,数据可能处于不一致的状态;当事务成功完成时,数据必须再次回到已知的一致状态 隔离性(Isolation) 对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务 修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据 持久性(Durability 事务持久性不管系统是否发生故障,事务处理的结果都是永久的 一旦事务被提交,事务的效果被永久地保留在数据库中 事务的操作