mysql
文章平均质量分 69
冬天里的懒猫
这个作者很懒,什么都没留下…
展开
-
ShardingSphere-jdbc5.0实现水平拆分的两种不同拆分方法
如果有一个数据库gts中,存在一张订单表t_order_summary,这个表的数据量特别大。现在考虑对这张表进行水平拆分。具体的拆分方法有如下两种。1.按order_id字段拆分表可以将t_order_summary按order_id拆分到多个表如32个表,然后将32个表拆分到不同的数据库中。如将t_order_summary拆分之后效果如下:数据库gts01:+--------------------+| Tables_in_gts01 |+--------------------+原创 2021-09-24 17:30:07 · 357 阅读 · 0 评论 -
使用ShardingSphere5.0进行数据库水平拆分过程以及所踩的坑
在学习过ShardingSphere-JDBC相关的操作之后,现在使用其对数据库进行水平拆分。1.环境准备1.版本信息mysql的版本:[root@m161p114 sql]$ mysql -uroot -pmysql;mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Yo原创 2021-09-23 21:24:18 · 1447 阅读 · 1 评论 -
Mysql5.7主从复制配置全过程
mysql主从复制是最常见的高可用方式,通过主-从的方式,实现系统的高可用。在生产环境种,通常采用一主多从的方式,通过主库写数据,从库读数据,来提升系统的性能。现在就演示一下,mysql5.7之下,如何配置主从复制。1. 环境准备两台安装好mysql数据库的服务器如下:序号服务器IP主/从mysql版本1192.168.161.114主5.7.342192.168.161.115从5.7.342.主库配置查看主库log配置:mysql> sh原创 2021-09-17 21:03:25 · 847 阅读 · 0 评论 -
Mysql5.7在CentOS7中基于源码无错安装(亲测有效)
鉴于之前安装不带boost版本的mysql,由于boost头文件的问题,导致在编译boost的过程中出现各种各样的问题。在官网发现居然现在有在源码中带boost头文件的版本,那么现在就验证一下这个版本的安装过程。1 安环境准备1.1 操作系统操作系统信息:[root@m161p115 mysql]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-原创 2021-09-16 15:39:07 · 378 阅读 · 0 评论 -
Visualizing the impact of ordered vs. random index insertion in InnoDB (16 顺序插入和随机插入索引的影响可视化分析)
许多dba都知道,按照“随机”顺序(或者实际上与按键排序有很大区别的任何顺序)构建索引的效率会低得多。然而,通常很难真正理解为什么会这样。通过innodb_ruby中的“- examples”可视化模式,可以很容易地可视化索引的结构。innodb_space的space-lsn-age-illustrate模式允许通过“LSN age”可视化空间文件中的所有页面,根据每个页面最近修改的情况生成类似空间文件的热图。注意一个小的Ruby脚本generate_data_simple。rb用于生成下面使用的测试表翻译 2020-09-03 18:15:01 · 143 阅读 · 0 评论 -
InnoDB with reduced page sizes wastes up to 6% of disk space(15.InnoDB减少页的大小会造成6%的磁盘空间浪费)
InnoDB数据存储的研究中,我提到了MySQL的Bug #67963,题目是“InnoDB每16384页中浪费62页”。我说:InnoDB偶尔需要分配一些内部记账页面;每256mib数据对应2个页。为此,它分配一个区段(64个页面),分配所需的两个页面,然后将剩余的区段(62个空闲页面)添加到一个名为FREE_FRAG的区段列表中,该区段用于单页分配。几乎没有从该列表中分配页面,所以这些页面被浪费了。这是相当微妙的,在任何大型InnoDB表中只浪费0.37%的磁盘空间,但尽管如此,这还是很有趣的,而且翻译 2020-09-02 19:24:46 · 100 阅读 · 0 评论 -
A little fun with InnoDB multi-versioning(14.有关InnoDB多版本中的一个小问题)
执行以下命令,在MySQL CLI中,在一个新的连接上执行,不需要做特别的准备(并且要特别注意执行时间):ysql> show create table t \G*************************** 1. row *************************** Table: tCreate Table: CREATE TABLE `t` ( `a` int(10) unsigned NOT NULL, `b` int(10) unsigned NO翻译 2020-08-31 18:31:03 · 159 阅读 · 0 评论 -
The basics of the InnoDB undo logging and history system(13.innoDB undo log 和历史记录的基本知识)
InnoDB实现了多版本并发控制(MVCC),这意味着不同的用户将看到他们交互的数据的不同版本(有时称为快照,这是一个有点误导人的术语)。这样做是为了允许用户看到系统的一致视图,而不需要昂贵的、限制性能的锁,因为锁会限制并发性。(这就是“并发控制”部分的来源;另一种选择是锁定用户可能需要的所有内容。)undo log和InnoDB的“历史”系统是其实现MVCC的基础机制,但它的工作方式通常人们知之甚少。InnoDB保存了所有被更改的内容的副本InnoDB实现MVCC的关键是,当一个记录被修改时,被修改的翻译 2020-08-30 21:42:16 · 153 阅读 · 0 评论 -
InnoDB Tidbit:The doublewrite buffer wastes 32 pages (512 KiB) (12.双写缓冲区会导致512KB的浪费)
在我不断探索完全理解InnoDB数据存储的过程中,我遇到了一个非常小而无关紧要的问题。这个问题还是比较有趣的。我注意到下面的页面的块,他们很早就在ibdata1系统标空间中分配,但是显然没用使用。(不必要的行从输出的过程中删除):$ innodb_space -f ibdata1 space-page-type-regionsstart end count type 13 44 32翻译 2020-08-29 21:03:14 · 167 阅读 · 1 评论 -
How does InnoDB behave without a Primary Key(11.InnoDB在没用主键情况下的行为)
今天下午,我和Arjen Lentz讨论了InnoDB在没有声明主键的情况下的行为,这个话题很有趣,也没有足够的文档证明,所以有必要写一个简短的帖子。InnoDB聚集索引的背景在InnoDB索引页的物理结构中,我描述了“在InnoDB中的任何内容都是索引”。这意味着InnoDB必须为每个表都有一个“聚簇索引”,这通常是主键。手册上说在聚集和二级索引:如果表没有主键或合适的唯一索引,InnoDB内部会在一个包含行ID值的合成列上生成一个隐藏的聚集索引。这些行是按照InnoDB给表中的行分配的ID排序的。翻译 2020-08-28 19:20:32 · 107 阅读 · 0 评论 -
InnoDB bugs found during research on InnoDB data storage(10.在研究InnoDB数据存储时发现的InnoDB bug)
在研究InnoDB的存储格式和构建innodb_ruby和innodb_diagrams项目的过程中,我和Davi Arnaut发现了很多InnoDB的bug。我想我应该提几个,因为它们相当有趣。由于innodb_space实用程序使重要的内部信息以一种以前从未有过的方式可见,所以这些漏洞在很大程度上可以被发现。使用它来检查生产表提供了许多信息,可以继续寻找导致错误的原因。当我们最初查看由innodb_space数据生成的按页空闲空间的图形图时,我们非常惊讶地看到许多页面不到一半的填充(包括许多几乎为空的翻译 2020-08-27 19:32:10 · 121 阅读 · 0 评论 -
Efficiently traversing InnoDB B+Trees with the page directory (9.利用页目录实现对B+树的高效遍历)
这篇文章是基于2014年2月3日的innodb_ruby 0.8.8版本。在《学习InnoDB:核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部,它提供了这篇文章中用到的图表。稍后,在对innodb_ruby的快速介绍中,我介绍了innodb_space命令行工具的安装和一些快速演示。InnoDB索引页的物理结构在《InnoDB索引页的物理结构》一文中进行了描述,逻辑结构在《InnoDB的B+树索引结构》中进行了描述,行记录的物理结构在《InnoDB的行记录的物理结构》一翻译 2020-08-26 20:19:41 · 176 阅读 · 0 评论 -
The physical structure of records in InnoDB(8.行记录的物理结构)
《学习InnoDB:核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部,它提供了这篇文章中用到的图表。稍后,在对innodb_ruby的快速介绍中,我介绍了innodb_space命令行工具的安装和一些快速演示。在InnoDB索引页的物理结构中描述了InnoDB索引页的物理结构,在InnoDB的B+树索引结构中描述了InnoDB的逻辑结构。现在我们将详细了解这些页面中使用的记录的物理结构。在这篇文章中,只考虑了紧凑行格式(用于Barracuda表格式)。record的偏移翻译 2020-08-25 20:38:25 · 109 阅读 · 0 评论 -
B+Tree index structures in InnoDB(7.InnoDB中B+树的索引结构)
这篇文章引用的是2014年2月3日的innodb_ruby 0.8.8版本。在《学习InnoDB:核心之旅》中,我介绍了innodb_diagrams项目来描述InnoDB的内部结构,它提供了这篇文章中用到的所有图表。在对innodb_ruby的快速介绍一文中,我介绍了innodb_space命令行工具的安装和一些快速演示。在InnoDB索引页的物理结构中描述了InnoDB索引页的物理结构。现在,我们将通过一些实际示例来研究InnoDB如何在逻辑上构造索引。B+树的一些术语:根、叶子和层InnoDB翻译 2020-08-24 18:27:32 · 260 阅读 · 0 评论 -
The physical structure of InnoDB index pages(6.InnoDB索引页文件的物理结构)
《学习InnoDB:核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部,它提供了这篇文章中用到的图表。(请注意,下面的每张图片都链接到同一张图片的更高分辨率版本。)空间和每个页面的基本结构已经在InnoDB空间文件布局基础中描述过,现在我们将升入研究索引页面的物理结构,这将为逻辑或者更高级别之上对索引的讨论打下基础。在InnoDB中一切都是索引在深入讨论物理结构之前,有一点很重要,那就是在InnoDB中,所有的内容都是索引,这对物理结构意味着什么?1.每张表有一个主键翻译 2020-08-23 20:40:29 · 258 阅读 · 0 评论 -
Exploring InnoDB page management with innodb_ruby(5.用innodb_ruby分析InnoDB的页管理)
本文引用的是2014年2月3日的innodb_ruby 0.8.8版本。在《学习InnoDB:核心之旅》中,我在innodb_ruby项目中引入了一个新的库和命令行工具。稍后,在对innodb_ruby的介绍中,我将介绍innodb_space命令行工具的安装和一些快速演示。在我的上一篇文章《InnoDB空间文件中的页面管理》中,我描述了InnoDB的区段、文件段和空闲空间管理结构。现在,我将提供几个使用innodb_space在实际表中检查这些结构的演示。一个最小的空表我创建了一个空表(模式无关紧翻译 2020-08-19 19:53:29 · 103 阅读 · 0 评论 -
Page management in InnoDB space files(4.InnoDB Space文件的页管理)
在前面《学习InnoDB核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部。它提供了这篇文章中用到的所有图表。每个页面的基本结构和空间描述是InnoDB空间文件布局的基本知识,现在我们将进一步描述InnoDB的结构与管理页面和区段。以及自由空间管理,以及它如何追踪页分配给许多不同的用途,以及使用哪个页。区段和区段描述符如前所述,InnoDB的页面通常为16KB,通常由64个连续的page构成一个1MB的块。这被称为一个区段。InnoDB在空间中的固定分配FSP_HDR和X翻译 2020-08-18 20:07:56 · 139 阅读 · 0 评论 -
The basics of InnoDB space file layout(3.InnoDB空间文件布局基础知识)
在前面《学习InnoDB核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部。它提供了这篇文章中用到的所有图表。InnoDB的数据存储模型使用空间“Space”,在Mysql中通常被称为表空间,在InnoDB中有时也被称为文件空间。一个空间能够由操作系统级别的多个实际文件如ibData1、ibdata2组成。但是它只是一个逻辑文件。由多个物理文件被当作物理连接在一起的一个逻辑文件处理。InnoDB的每个空间都分配一个32位的整数空间ID,它在许多不同的地方被用来引用这个空间。翻译 2020-08-17 15:47:08 · 165 阅读 · 0 评论 -
A quick introduction to innodb_ruby (2.对innodb_ruby的简单介绍)
本文基于2014年3月innodb_ruby的0.8.8版本。在前文《学习innoDB核心之旅》中,我在innodb_ruby的项目中引入了一个新的库和命令行工具。现在我来展示一下他的一些功能。我不会尝试解释所有公开的innoDB结构,因为那会让演示偏离我的本意。我们稍后会再来介绍这些结构。安装 innodb_ruby如果你熟悉ruby和gems或者你恰好有一个良好配置的ruby环境。我会定期讲innodb_ruby gems推送到RubyGems中,所以你只需要执行:gem install inn翻译 2020-08-14 11:00:12 · 245 阅读 · 0 评论 -
On learning InnoDB: A journey to the core (1.学习innoDB的核心之旅)
我已经使用innoDB大约十年了,到目前为止,我对他的理解已经足够好,可以在大多数时候让他为我做我任何想做的事情。然而,为了达到一些与效率相关的目标,我发现我有必要把我的理解提升到一个新的层次。不幸的是,innoDB缺乏对其内部数据结构的清晰解释,阅读源代码是找到我需要新的唯一办法。然而,我很快发现这些结构和他们的用法(特别是他们之间的相互关系)太过复杂。仅凭阅读代码根本无法记住他们,此外,仅仅基于阅读,希望你已经正确地理解了数据结构。(对我而言,这个过程会有很多误解)。长期以来,我一直采用以下三个步.翻译 2020-08-13 18:28:05 · 365 阅读 · 0 评论 -
基于Centos6.5源码编译安装mysql-5.7.17
文章目录一.安装环境二.安装准备三.编译boost四.安装mysql五.新增配置文件六.初始化数据库七.新增boot服务八.启动数据库九.设置mysql环境变量十.修改root密码1.关闭mysql2.修改MySQL授权登录方式3.切换到mysql库执行修改语句4.修改密码5.重启登陆6. 异常1820十一.创建数据库基于Centos6.5源码编译安装mysql-5.7.17过程详解由于工作需要,需要在centos6.5服务器上安装mysql5.7,如下是详细安装过程。一.安装环境CentOS r原创 2020-07-16 11:35:13 · 212 阅读 · 0 评论