
mysql
文章平均质量分 96
mysql
life1024
hello
展开
-
多ClassLoader实例加载多版本jdbc驱动原理,驱动包自动注册原理
我们知道一个类的元数据信息 在jvm方法区中 是以:ClassLoader实例对象+类全限定名 确定唯一的。也就是在jvm中可能存在 两个全限定名相同的class。同一个ClassLoader实例 不能加载两个全限定名 相同的class。ClassLoader 具体可以参看:https://liuhuiyao.blog.youkuaiyun.com/article/details/107078160URLClassLoader u1 = new URLClassLoader(new URL[] { u ..原创 2020-12-09 09:51:43 · 1072 阅读 · 1 评论 -
mysql 分库分表分区 动态扩容 总结
mysql自带分表分区策略mysql 自带有分区分表策略、具体参考https://liuhuiyao.blog.youkuaiyun.com/article/details/106747340。只能说单库情况下、并且简单的情况如按时间做range分区可以使用mysql自带分区策略。更多的情况下完全要自己代码逻辑实现。开源解决方案开源中间件或框架cobar TDDL atlas sharding-jdbc 当当开源产品,属于client方案 mycat 基于cobar改造,属于proxy方案sh原创 2020-11-15 12:32:03 · 2719 阅读 · 0 评论 -
mysql 分库分表分区总结
Mysql目录结构一个库一个目录MyISAM引擎InnoDB引擎分库分表分区总结对于分区分表都可以进行横向(按表字段分),纵向分(按数据行分),此文暂时值考虑横向分。对于分库:分库分区说明分区和分表类似,把原本的一个数据量很大的表,根据规则分成很多块。这些块可以跨磁盘分布。突破单磁盘IO的限制。好处分区为了突破IO瓶颈,可以把索引及数据文件放在不同磁盘。 可以根据自定义的分区方式 优化查询,比如根据分区列查询,就会定位到某个分...原创 2020-06-14 16:06:40 · 3019 阅读 · 0 评论 -
mysql 索引,以及sql优化总结
sql问题where执行顺序多个表联合查询时where的顺序是从左到右,对于单个表的条件,mysql会根据sql条件进行优化,比如先查询索引的条件。join的问题小表驱动大表,减少遍历次数小表(筛选条件后) left join 大表(筛选条件后)。count的问题count(1),count(*) 统计所有行,包含值为null的count(字段) 值统计不为null的。具体来说 count(1)和count(*) 没有太大区别。如果表没有主键,那么count.原创 2020-06-14 12:34:26 · 845 阅读 · 1 评论 -
mysql 7种日志及相关配置
MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slow query log) 6:一般查询日志(general log) 7:中继日志(relay log)。其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。一、重做日志(redo原创 2020-06-14 11:09:09 · 1622 阅读 · 2 评论 -
mysql 物理存储 数据页
MySQL Innodb 数据页结构分析页(Page)是 Innodb 存储引擎用于管理数据的最小磁盘单位。常见的页类型有数据页、Undo 页、系统页、事务数据页等,本文主要分析的是数据页。默认的页大小为 16KB,每个页中至少存储有 2 条或以上的行记录,本文主要分析的是页与行记录的数据结构,有关索引和 B-tree 的部分在后续文章中介绍。下图是 Innodb 逻辑存储结构图,从上往下依次为:Tablespace、Segment、Extent、Page 以及 Row。本文关注的重点是 Page转载 2020-06-12 10:59:57 · 905 阅读 · 0 评论 -
mysql redolog undolog binlog,mysql 内部二阶段提交是什么,以及作用
innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。1.redo原创 2020-06-12 10:58:36 · 2527 阅读 · 1 评论 -
mysql 种隔离级别 以及每种级别对应的问题
mysql 4种隔离级别(1)未提交读(2)提交读(3)可重复读(4)串行化(1)幻读:t1查询出两天记录,此时t2插入一条id=3的记录然后commit,t1此时插入id=3的记录 报主键错误,对与delete和insert。(2)不可重复读:t1查出id=1的记录name=a,此时t2修改id=1的name=b并commit。此时t1再次查询出id=1的name=b,导致两次查询出的数据不同。(3)脏读:脏读就是指当事务A对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务B也访原创 2020-06-04 10:00:27 · 363 阅读 · 0 评论 -
Mysql的四个隔离级别 与mvcc(2)
一、Mysql的四个隔离级别预备工作:先创建一个test数据库及account表,create database test;use test;create table account(id int not null,balance float not null, PRIMARY KEY ( id))向account中插入两条测试数据INSERT INTO table(id,balance)VALUES (1,1000);INSERT INTO table(i..转载 2020-06-03 14:23:31 · 269 阅读 · 0 评论 -
mysql隔离级别与mvcc 关系的理解
MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。主要通过以下两个方式组合 来实现隔离级别的版本链:用于存储历史已经完成的事务版本。readview:主要就是有个列表来存储我们系统中当前活跃着的读写事务,也就是begin了还未提交的事务在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔原创 2020-06-03 14:20:55 · 538 阅读 · 0 评论 -
mysql索引底层实现,MyISAM ,InnoDB
目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是数据库系统实现索引的首选数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:image.png这里设表一共有三列,假设我 在 My...原创 2020-06-03 14:06:37 · 368 阅读 · 0 评论 -
navicat工具来将SQL Server数据迁移到MySQL
下面来说说用navicat工具来将SQL Server数据迁移到MySQL上:1. 新建需要迁移的数据库2. 打开数据库,点击导入向导3. 选择数据导入格式4. 选择数据源5. 连接属性6. 选定要迁移的表7. 定义目标表8. 更改实际情况对目标表进行更改9.原创 2016-04-05 14:37:05 · 5287 阅读 · 0 评论 -
mysql 默认八小时空闲自动断开连接
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值。原创 2016-05-19 12:10:57 · 3867 阅读 · 0 评论 -
mysql 添加用户,授权,远程登陆,远程导入导出数据库,用户及权限查询,新增用户无法登陆,
添加用户及授予权限grant all privileges on *.* lhy@“10.163.225.87“ identified by ‘123′; *.*代表所有表,lhy是账户,‘123′是密码, “10.163.225.87“是ip,当ip地址是“%”时匹配所有地址。GRANT USAGE ON *.* TO 'discuz'@'localhost原创 2016-03-10 13:54:55 · 1788 阅读 · 0 评论 -
mysql 5.7版本安装问题
2013年10月,MySQL开发团队正式宣布支持Yum仓库,这就意味着我们现在可以从这个Yum库中获得最新和最优版的MySQL安装包。本文将在一台全新安装的CentOS6上安装MySQL5.6,如果你不熟悉MySQL5.6的新特性,我建议从MySQL 5.6的新特性开始,其中有很多非常有用的特性。首先我们需要从MySQL开发者网站下载Yum仓库文件,导入Yum库后,一个简单的yumup原创 2016-01-05 23:35:02 · 1388 阅读 · 0 评论 -
mysql 5.6 ,5.7 ,8.0 忘记密码,及修改密码问题
5.5版本1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器原创 2016-01-05 23:40:48 · 18712 阅读 · 1 评论 -
mysql存储过程需要注意的
1.当使用游标赋值结果集时,变量名不能使用列明,不然赋值为nullBEGINDECLARE stopindex INT DEFAULT 0;DECLARE id1 int;DECLARE title VARCHAR(1000);DECLARE description VARCHAR(1000);DECLARE insertdate DATETIME;DECLARE usern原创 2016-03-30 13:41:08 · 533 阅读 · 0 评论 -
mysql存储过程入门
mysql存储过程详解1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一原创 2016-03-29 22:15:58 · 542 阅读 · 0 评论 -
java 实现 mysql 数据库导出与导入(适合linux和windows)
备份import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class DataBackup { publ原创 2016-09-17 14:25:58 · 15667 阅读 · 1 评论 -
mysql 连接池 不够用问题
原因: (1)连接后没有关闭(2)死锁(3)程序重开的连接数太多等解决 :(1)连接后如果不用及时关闭,(2)手动关闭不用连接mysql> show processlist;+----+------+-----------+--------------------+---------+------+-------+------------------+| Id | User |原创 2017-01-09 18:30:41 · 2576 阅读 · 0 评论 -
mysql实现主从复制
今天说一下MySQL的主从复制如何做到!准备工作:1.两个虚拟机:我这里用的是CentOS5.5,IP地址分别是192.168.1.101 和192.168.1.105; 101做主服务器,105做从服务器(都已经安装相同版本的Mysql);2.本机环境:Apache+PHP+MySQL好了,现在开始吧,来看看这听起来高大上的主从复制是原创 2017-02-24 12:52:00 · 674 阅读 · 0 评论 -
利用keepalived构建高可用MySQL-HA
一、mysql 主从复制参考http://blog.youkuaiyun.com/u013378306/article/details/56837766二、keepalived安装及配置注意的地方:两台服务器设置的vip必须一样virtual_router_id 必须一样原理:主服务使用虚拟vip 优先,当主服务关掉后,从服务启用虚拟vip转载 2017-06-04 09:38:05 · 1184 阅读 · 0 评论 -
mysql 分区
教程一1. 什么是表分区?表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。2. 表分区与分表的区别分表:指的是通过一定规则,将一张表分解成多张不同的表。比如将用户订单记录根据时间成多个表。 分表与分区的区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。原创 2017-07-02 07:56:35 · 409 阅读 · 0 评论 -
mysql 分表 分区
为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。什么是分表?分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实原创 2017-07-02 07:57:22 · 385 阅读 · 0 评论 -
spring boot mysql 8小时连接超时
使用springboot 线程池连接MySQL时,mysql数据库wait_timeout 为8个小时,所以程序第二天发现报错,在url配置了 autoReconnect=true 也不行,正确配置以下#验证连接的有效性spring.datasource.test-while-idle=true#获取连接时候验证,会影响性能spring.datasource.te原创 2017-09-25 15:03:27 · 9207 阅读 · 1 评论 -
mysql 编码的问题
当使用mysql数据库时,要确定五个编码。(1)首先我们要设置数据库的编码;(2)然后确定程序中的请求和响应的编码和数据库一致;(3)连接数据库的编码和数据库一致,jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8;(4)页面编码和数据库一致。(5)程序文件编码和数据库一致。当以上五中都相原创 2016-03-19 21:41:44 · 430 阅读 · 0 评论