db

MySQL存储过程之事务管理

左心房为你撑大大i 提交于 2020-04-14 04:38:07
【今日推荐】:为什么一到面试就懵逼!>>> MySQL存储过程之事务管理 ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务。 1,MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Java代码 MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务、行级锁、并发 Berkeley DB:支持事务 隔离级别: 隔离级别决定了一个session中的事务可能对另一个session的影响、并发session对数据库的操作、一个session中所见数据的一致性 ANSI标准定义了4个隔离级别,MySQL的InnoDB都支持: Java代码 READ UNCOMMITTED:最低级别的隔离,通常又称为dirty read,它允许一个事务读取还没commit的数据,这样可能会提高性能,但是dirty read可能不是我们想要的 READ COMMITTED:在一个事务中只允许已经commit的记录可见,如果session中select还在查询中,另一session此时insert一条记录,则新添加的数据不可见 REPEATABLE READ:在一个事务开始后,其他session对数据库的修改在本事务中不可见

【MyBatis框架】mapper配置文件-关于动态sql

故事扮演 提交于 2020-04-11 13:26:21
动态sql 1.什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。 2.需求 用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql。 对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。 3.mapper.xml 原查询语句配置: <mapper namespace="cn.edu.hpu.mybatis.mapper.UserMapper"> <!-- 用户信息综合查询 #{UserCustom.sex}取出包装对象中性别值 ${UserCustom.username}取得pojo包装对象中用户名称 --> <select id="findUserList" parameterType="cn.edu.hpu.mybatis.PO.UserQueryVo" resultType="cn.edu.hpu.mybatis.PO.UserCustom"> select * from user where user.sex=#{userCustom.sex} and user.username like '%${userCustom.username}%' </select> <!-- 用户信息综合查询总数 --> <select id="findUserCount"

PHP父类调用子类方法,CodeIgniter中DB的继承关系

孤街浪徒 提交于 2020-03-17 01:54:46
某厂面试归来,发现自己落伍了!>>> 先看几行代码: <!-- lang: php --> class A { private $b; function __construct($a){ $this->b = $a; } function func1(){ var_dump($this->b); } function func2(){ $this->funcb(); } } class B extends A { function funcb(){ var_dump("b"); } } $a = new B('a'); $a->func1(); $a->func2(); 这几行代码是没有错误的,在父类中调用子类的方法,子类实例化之后可以正常工作。 CI的DB部分正是使用了这种方式来封装数据库操作。 CI的DB函数的写法正是先加载 CI_DB_driver 这个基类,然后检查active record是否开启,如果开启则 <!-- lang: php --> class CI_DB_active_record extends CI_DB_driver 然后 <!-- lang: php --> class CI_DB extends CI_DB_active_record 否则 <!-- lang: php --> class CI_DB extends CI_DB_driver

oracle数据库的启动关闭以及三种状态

不问归期 提交于 2020-03-02 08:43:33
每个用户使用数据库,必须先启动数据库。每个启动的数据库就是对应一个实例,实例可以理解为数据库运行时在内存里部分。 数据库启动分三步走: 1 启动实例: (此时启动的数据库实例还没有跟任何数据库进行关联。换句话说,即使数据库不存在也可以启动例程。启动例程主要是跟初始化参数有关,主要是用来初始化数据库的运行环境。) 数据库在关闭的情况下启动实例的操作是Startup nomount 关闭数据库的操作时:shutdown immediate 2 装载数据库: (主要完成以下工作:将数据库与一个已打开的实例关联起来, 打开初始化参数文件中指定的控制文件 根据控制文件获得数据文件和重做日志文件的名称和状态,并进行装载 此时数据库仍然是出于关闭状态的。用户无法与数据库建立连接,无法访问数据库并对数据库进行更改。显然,如果只是装载数据库而没有打开数据库的话,对于普通用户来说是没有多大作用的。但是对于数据库管理员来说此时他发展的舞台就很大了。因为只装载数据库而没有打开它,数据库管理员已经可以通过命令来维护数据库) 在例程启动的状态下的操作: alter database mount; 在例程关闭的状态下的操作:startup mount 3 打开数据库: (程序能够访问后台数据库系统。用户才能够查询、更改数据库中的记录。 在数据库处于装载mount的状态下:alter database open

2.使用jodd 操作mysql数据库

拜拜、爱过 提交于 2020-03-01 14:51:59
接着上一个博客 新建class类JDBC.JAVA 由于操纵mysql数据库需要第三方的jar包,而为了jar包依赖管理,现在将项目转换为maven项目。 现在的项目的图标是这样子的 使用默认选项 新的项目结构 maven项目的配置文件,需要第三方的jar包都这在这里配置。 完成本项目需要mysql的jdbc驱动,可以在搜索引擎中直接搜索maven mysql 可以罗列出版本已经相关信息,点击需要的版本(跟mysql的版本相对应),例如mysql版本为5.5.49,那么jar文件的版本为5.1.39,如果要查询mysql数据库与jdbc驱动版本之间的关系,可以先去搜。。。 这里可以看到maven需要添加的配置文件 修改原来项目的配置文件,加入相应的jar文件, <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>hello</groupId>

xPool

别等时光非礼了梦想. 提交于 2020-03-01 14:11:57
最近待业,闲的蛋疼,发现C++下连mysql连接池这么基础的东西都没用过,身为一名计算机毕业生,深感愧疚,遂生一想法,写个或者找个连接池,以增强本人垃圾一样的专业修养。 没想到写出来第一版就存在内存管理问题导致的coredump,查了半天,发现是调用了空指针的成员函数,彻底晕倒,其间为了调试gdb core中bt出来的libmysqlclient.so的mysql_real_connect调用,我下了mysql的5.5.31源代码来编了若干遍,想编个debug版调试最后也是没有成功。发现问题还是看网上帖子讲segfault11这种问题多半都是空指针搞的,反过头加了些指针的打印语句才意识到低级的错误,后来debug过程中还发现了更低级的逻辑错误,略去不表,还是自己太菜,连个空指针这个白痴的内存问题都不预先防范,搞得一个300+行的东西,弄了三天才算稳定了,大大的罪过,浪费自己和社会的生产力。 过程中想到自己既然写不好,干脆找个好用的,结果发现了个libzdb,支持好些个开源db的连接池,随便下了个破代码测了一下,也没仔细搞,debug中参考了一下它的源码,还算是有点启发。 目前这个源码用valgrind自己测,有74KB左右的内存泄露,明白人能改改的话最好,作为一个菜鸟我只能帮自己到这了,当然这个泄露不会随时间线性的增长,这个我还是测过了的,有人能用到生产环境的话

如何安全地配置一个生产环境的MongoDB服务器?

老子叫甜甜 提交于 2020-02-28 12:37:01
‍ 如何安全地配置一个生产环境 MongoDB 服务器? 安全配置一个生产环境 MongoDB 服务器 如果 MongoDB 是一个为你提供选择的文档存储器,那么这篇文章会帮助你,安全妥善地配置一切就绪的生产环境。 MongoDB 安装指南 包括了如何在一个 droplet 上安装 MongoDB 。 请您阅读 安全与认证 官方文件 。 步骤 推荐两个不同的方法,但都可行。第一个是通过一个 SSH 通道安全地连接到你的数据库。另一个是允许在网上可以访问到你的数据库。两种方法,推荐前者。 通过 SSH 通道连接 通过一个 SSH 通道连接到你的 Mongo 虚拟专用服务器,你可以避免很多潜在的安全问题。警告:你的 VPS 一定要完全锁定,不能对其他端口开放。建议 SSH 配置为只有秘钥或秘钥加密码。 要建立一个 SSH 通道,你需要保证: · 你可以通过 SSH 进入你的 Mongo Droplet · 你的 Mongo 实例绑定到本地主机 然后,运行以下命令来初始化连接: # The \s are just to multiline the command and make it more readable ssh \ -L 4321:localhost:27017 \ -i ~/.ssh/my_secure_key \ ssh_user@mongo_db_droplet_host

关于MySQL DNS解析探究之一:DNS解析确实在起作用

依然范特西╮ 提交于 2019-12-26 17:03:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 机器A --> 192.168.103.94 -- 服务器 机器B --> 192.168.4.2 -- 客户端 机器A => 装上mysql-server,启动; 使用root用户登录,查看DNS解析是否开启,执行如下命令: mysql> show variables like 'skip_name_resolve%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | skip_name_resolve | OFF | +-------------------+-------+ 1 row in set (0.00 sec) 说明DNS解析是开启状态 在/etc/hosts中添加: 192.168.4.2 mysql_client_host 在mysql中添加用户testdns,host为192.168.4.2 mysql> grant all privileges on *.* to testdns@'192.168.4.2' identified by '000'; mysql> select user,host,password from user where user=

【MyBatis框架】MyBatis入门程序第一部分

坚强是说给别人听的谎言 提交于 2019-12-09 20:47:25
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis 1.需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询用户信息 添加用户 删除 用户 更新用户 mybatis运行环境(jar包): 从https://github.com/mybatis/mybatis-3/releases下载,3.2.7版本 lib下:依赖包 mybatis-3.2.7.jar:核心 包 mybatis-3.2.7.pdf,操作指南 加入mysql的驱动包 加入的所有jar包如图(可以在这里下载:http://download.csdn.net/detail/u013517797/8781295) 2.创建log4j.properties 在src中放入日志配置文件 文件内容(拷贝自官方帮助文档) # Global logging configuration #在开发环境下日志级别要设成DEBUG,生产环境设为INFO或ERROR log4j.rootLogger=DEBUG, stdout # MyBatis logging configuration... log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j

如何设置一个可扩展的MongoDB数据库?

a 夏天 提交于 2019-12-04 13:12:07
如何设置一个可扩展的 MongoDB 数据库? MongoDB 是一款 NoSQL 数据库,功能强大,诸如复制和内置分片,你可以通过给服务器分布内容,将数据库扩展至任意多的服务器。 安装与 MongoDB 有关的任何东西之前,我们需要确认选择了正确的硬件,并调试好了软件。 1. 硬盘驱动 如果你可以选择即将用到的硬件驱动,可以将企业级双 SSD 升级为 RAID1 。正如我们之前提到的,它性能卓越,节省费用。 在 Linux 编辑你的 /etc/fstab 文件,并确保在将要和 MongoDB 使用的挂载点禁用“访问时间 logging ”( access time logging )。在第 4 栏添加 noatime : 重新挂接分区: [root@mongodb1 ~]# mount -o remount / 验证新的设置生效: [root@mongodb1 ~]# mount /dev/sda on / type ext4 (rw,noatime) 2. CPU 和内存 在一个虚拟机监视器上,将 MongoDB 作为一个虚拟机进行设置,这样你可以在以后扩展 RAM 和 CPU 内核。应该分配的 CPU 内核和 RAM 的大小取决于你的基础设施的需求以及预算。 3. 优化 最有用的技巧是优化你的数据库查询: · 给常用的搜索查询和分类查询添加索引。 · 使用 MongoDB 的