mysql数据库

mysql double write

故事扮演 提交于 2020-01-10 18:00:30
转自: https://www.cnblogs.com/cchust/p/3961260.html mysql double write (二次写)是mysql innodb存储引擎的一个重要特性,本人这两天翻阅了相关的资料,结合自己已有的知识,说说自己对double write的理解,供各位看官参考。 页断裂(partial write) double write技术innodb为解决页断裂(partial write)问题而生,所谓页断裂是数据库宕机时(OS重启,或主机掉电重启),数据库页面只有部分写入磁盘,导致页面出现不一致的情况。数据库,OS和磁盘读写的基本单位是块,也可以称之为(page size)block size。我们知道数据库的块一般为8K,16K;而OS的块则一般为4K;IO块则更小,linux内核要求IO block size<=OS block size。磁盘IO除了IO block size,还有一个概念是扇区(IO sector),扇区是磁盘物理操作的基本单位,而IO 块是磁盘操作的逻辑单位,一个IO块对应一个或多个扇区,扇区大小一般为512个字节。所以各个块大小的关系可以梳理如下: DB block > OS block >= IO block > 磁盘 sector,而且他们之间保持了整数倍的关系。比如我的系统各个块的大小如下,DB以mysql为例

Qt中MySQL数据库的操作例程

丶灬走出姿态 提交于 2020-01-10 17:49:46
  数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin下面 .h文件 1 #ifndef MYWIDGET_H 2 #define MYWIDGET_H 3 4 #include <QWidget> 5 #include <QSqlDatabase> 6 #include <QDebug> 7 #include <QMessageBox> 8 #include <QSqlError> 9 #include <QSqlQuery> 10 #include <QVariantList> 11 12 namespace Ui { 13 class MyWidget; 14 } 15 16 class MyWidget : public QWidget 17 { 18 Q_OBJECT 19 20 public: 21 explicit MyWidget(QWidget *parent = 0); 22 ~MyWidget(); 23 24 private slots: 25 void on_sureButton_clicked(); 26 27 void on_cancelButton_clicked(); 28 29 void on

MySQL 关键字

我只是一个虾纸丫 提交于 2020-01-10 17:20:21
前言 今天设计数据表,本人英语不是特别,把 describe 作为描述字段,新建数据库成功后,只要涉及到 describe 字段查询、新增、修改都是失败,并且抛出如下错误: [ERR][SQL Editor Form]: Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'describe FROM test' at line 1 原因 因为 describe 是MySQL关键字,所以设计数据库的时候一定要慎重,避免使用 MySQL关键字 关键字 避免再次出现上述问题,我把关键字贴出来 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN CONDITION CONNECTION CONSTRAINT CONTINUE CONVERT CREATE CROSS CURRENT_DATE

mysql系列(七)mysql 主从复制和mysql查询优化

为君一笑 提交于 2020-01-10 17:17:40
1. 什么是MySQL主从复制 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 2. mysql 的不同复制类型 2.1异步复制 MySQL复制默认是异步复制,Master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理;这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。 缺点:不能保证所有事务都被所有slave接收。 2.2 同步复制 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端,也就是说Master提交事务,直到事务在所有slave都已提交,才会返回客户端事务执行完毕信息; 缺点:需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 2.3 半同步复制( 半同步复制在5.5后才支持 ) 当Master上开启半同步复制功能时,至少有一个slave开启其功能。当Master向slave提交事务,且事务已写入relay-log中并刷新到磁盘上,slave才会告知Master已收到;若Master提交事务受到阻塞,出现等待超时,在一定时间内Master 没被告知已收到

MySQL的InnoDB索引原理详解

自闭症网瘾萝莉.ら 提交于 2020-01-10 16:19:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM, 文档 )。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出。 1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分。 先看看几种树形结构: 1 搜索二叉树:每个节点有两个子节点,数据量的增大必然导致高度的快速增加,显然这个不适合作为大量数据存储的基础结构。 2 B树:一棵m阶B树是一棵平衡的m路搜索树。最重要的性质是每个非根节点所包含的关键字个数 j 满足:┌m/2┐ – 1 <= j <= m – 1;一个节点的子节点数量会比关键字个数多1,这样关键字就变成了子节点的分割标志。一般会在图示中把关键字画到子节点中间,非常形象,也容易和后面的 B+树区分。由于数据同时存在于叶子节点和非叶子结点中,无法简单完成按顺序遍历B树中的关键字,必须用中序遍历的方法。 3 B+树

Mysql——读写分离

我们两清 提交于 2020-01-10 14:00:40
文章目录 一、MySQL读写分离原理 二、应用场景 三、读写分离示例 1、配置 2、验证 一、MySQL读写分离原理 读写分离就是只在主服务器上写,只在从服务器上读 主数据库处理事务性查询,而从数据库处理select查询 数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库 二、应用场景 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有的读写操作 配置多台数据库服务器以实现读写分离 在主从复制的基础上实现读写分离 三、读写分离示例 环境: 1、3台Mysql服务器,部署好mysql服务(1台主服务器,2台从服务器) 2、3台服务器间搭建主从复制:https://blog.csdn.net/ML908/article/details/103914159 3、1台amoeba代理服务器 4、1台客户机 5、所有服务器关闭防火墙 思路: 需要有三个账户 1、从服务器找主服务器同步数据用的账户 2、amoeba访问mysql用的账户 3、客户端访问amoeba用的账户 主服务器(master) 192.168.17.157 从服务器(slave 1) 192.168.17.150 从服务器(slave 2) 192.168.17.135 代理服务器(amoeba) 192.168.17.130 客户机(client) 192.168.17.158 1、配置

Mysql 性能优化Explain详解

旧城冷巷雨未停 提交于 2020-01-10 13:25:06
explain 功能 我们在日常使用中,使用慢查询找到执行时间比较久的查询,然后使用SHOW STATUS、SHOW PROFILE、和explain做单条语句的分析。 使用explain关键字可以模拟优化器执行sql查询语句,从而知道Mysql是如何处理你的sql语句的。分析你的查询语句或者表结构的性能瓶颈。 具体可以分析哪些 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 使用语法 explain sql语句 得到了什么结果 expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra 字段概要解释: id:选择标识符 select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 ref:列与索引的比较 rows:扫描出的行数(估算的行数) filtered:按表条件过滤的行百分比 Extra:执行情况的描述和说明 字段详细解释 一、 id SQL执行查询的顺序的标识 1. id相同时,执行顺序由上至下 2.

MySQL 权限问题:The user specified as a definer ('root'@'%') does not exist的解决方法

那年仲夏 提交于 2020-01-10 13:24:40
The user specified as a definer ('root'@'%') does not exist的主要是由于对视图的操作没有相关权限 解决方法:用Navicat Premium打开MySQL连上数据库后 权限问题,授权 给 root 所有sql 权限 mysql> grant all privileges on *.* to root@"%" identified by "."; 刷新权限 mysql> flush privileges; 来源: https://www.cnblogs.com/Loners/p/12175615.html

CentOS7安装mysql服务器

大兔子大兔子 提交于 2020-01-10 12:05:00
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。 [root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm 之后就开始安装MySQL服务器。 [root@localhost ~]# yum -y install mysql-community-server 这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。 2 MySQL数据库设置 首先启动MySQL [root@localhost ~]# systemctl start mysqld.service 查看MySQL运行状态,运行状态如图: [root@localhost ~]# systemctl status mysqld.service 此时MySQL已经开始正常运行

navicat连不上centos上安装的mysql

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-10 11:20:31
在centos上安装好的mysql容器,在windows上的navicat连不上 docker exec -it 606ad8c5b31a(容器id) /bin/bash 登录mysql mysql -u root -p123456 (-p123456中间没有空格) 赋予任何主机都能访问mysql mysql>use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; //刷新数据 如果你想允许用户root从ip为192.168.1.1的主机连接到mysql服务器并使用123456作为密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.1' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES; 如果你想允许用户root从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用123456作为密码 GRANT ALL PRIVILEGES ON dk.* TO 'root'@'192.168.1.6' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH