快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

单机存储引擎到mysql的思考一

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

每个人都知道mysql现在非常热,许多后端工程师的要求之一是

精通

但是我们真的了解mysql吗?然后作者想在下面卖石膏

<表格>

标题

网址

<身体>

考虑将独立存储引擎用于mysql

https://blog.csdn.net/xk4848123/article/details/105166855

考虑将独立存储引擎用于mysql

https://blog.csdn.net/xk4848123/article/details/105195921

关于独立存储引擎到mysql的三个想法

https://blog.csdn.net/xk4848123/article/details/105207797

我已经在大型分布式存储系统的注3中描述了三个存储引擎。你还记得吗?哈希存储引擎,B树存储引擎,LSM树存储引擎。当我看到B树存储引擎时,突然想到了mysql。

MySQL的历史可以追溯到1979年。一个名叫Monty Widenius的程序员在TcX的一家小公司工作,并设计了一个使用BASIC的报告工具,以便可以在频率为4MHz的计算机上使用该工具。内存为16KB。跑。当时,这只是一个非常底层的,仅报告的存储引擎,称为Unireg。

Monty坚决重新设计了整个系统,以满足客户的项目需求。MySQL的第一个内部版本于1995年5月23日发布,1996年正式发布正式版本(3.11.1)。

2005年10月,发布了里程碑式的MySQL 5.0。游标,存储过程,触发器,视图,查询优化和分布式事务已添加到5.0,以实现”普通数据库管理系统”应具有的一组功能。在这一点上,MySQL清楚地显示了向高性能数据库发展的步伐。

2009年4月,甲骨文以74亿美元的价格收购了Sun Corporation,并将MySQL移交给了Oracle。

后来有一个更大的里程碑5.5,现在是mysql8。

就mysql默认引擎InnoDB而言,在独立表空间的情况下,每个表对应于磁盘上的.frm文件(表结构定义)和.ibd文件(数据文件),表数据文件本身是由B + Tree组织的索引结构。该树的叶子数据字段包含完整的数据记录。该索引的键是数据表的主键,因此InnoDB表数据文件本身就是主索引。 MySQL建议使用自动递增主键,然后每次插入新记录时,该记录将按顺序添加到当前索引节点的后续位置,当页面已满时,它将自动打开一个新页面。这将形成一个紧凑的索引结构,大约顺序被填充。由于不需要在每次插入时都移动现有数据,因此它非常有效,并且在维护索引方面不会增加太多开销。那么单个表mysql存储多少数据,当然不是无限的?因为,为了提高性能,MySQL会将表索引加载到内存中。当InnoDB缓冲区大小足够时,它可以完全加载到内存中,并且查询不会有问题。 但是,当单表数据库达到一定的上限大小时,内存将无法存储其索引,因此后续的SQL查询将生成磁盘IO,从而导致性能下降。阿里巴巴的《 Java开发手册》建议单个表中的行数超过500万行,或者单个表的容量超过2GB。那么为什么不使用B +树而不是哈希结构众所周知,散列的效率为O(1),B +树为O(longdN),d为输出度(分叉度),但是O(1)旨在精确查询单个片段我们的系统通常希望检查某个范围内的数据,该范围介于\ lt,\ gt,\ lt之间,由Yunyun排序,然后排序的B +树可以使 B +树相对于B树的优势, Dumpty ()意味着减少IO的数量,所有叶节点形成一个单链接list ,这是方便的Range查询,通常我们在开发过程中编写SQL时必须注意索引的使用,其中条件,按条件排序和按分组考虑是否根据实际发生的频率使用索引,并注意覆盖率索引(即,您检查的数据仅是索引),让我们看一下为什么搜索到的数据碰巧被快速索引了。

_0

看一下上图中的InnoDB辅助索引(非聚集索引也是普通索引的非主键),如果您必须在数据中查找更多的IO时间,则检索过程一目了然当然很慢。

看下面的例子

大型分页查询优化,类似于这种查询,实际上还有优化空间。此语句需要load1000000数据,然后基本上将所有数据丢弃。当然,只有10个慢。那时我们可以对其进行修改。尽管这还会加载一百万个数据,但由于索引覆盖率大,所有要查询的字段都在索引中,因此速度将非常快。

通常,我们经常说我们不想全表扫描,那么什么是全表扫描?请记住,我们的B +树的叶子节点是单向链接列表,是全表扫描,实际上是从此链接列表中搜索满足条件的记录(例如非索引字段使用年限)从开始到结束。

通常,一个项目将具有连接到mysql的连接池(dbcp,c3p0,drug,HikariCP),或者多个项目都连接到数据库,而所有项目都同时在操作数据库或表,所以为什么 mysql数据不会弄乱。酸?那么谁在背后呢?我将继续在思考二中阐述,谢谢。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638