MySQL性能优化的详细说明(二)

MySQL性能优化的详细说明(二)
七、MySQL数据库模式设计的性能优化

有效的模型设计

适度冗余-让查询减少连接多达两个

大字段垂直拆分总表的优化

基于大表水平分裂式的分裂优化

统计表准实时优化

合适的数据类型
时间存储格式的总类不太多,我们经常使用日期的三种主要类型,日期和时间戳。从存储空间,时间是最少的,四个字节的数据,和其他两类型是八字节,两倍。时间戳的缺点是,他只能储存时间从1970开始,和时间的其他两类型可以存储早在1001。如果我们需要存储的要求是小于1970,我们必须放弃时间戳类型,但只要我们不需要前1970使用的时候,我们应该尽量减少使用时间戳存储空间。

字符的存储类型
char(m)}类型属于静态长度类型,存储长度由字符数计算。因此最终的存储长度是基于字符集的。例如,用最大的存储长度为255字节,但如果是使用GBK,最大存储长度为510字节,char类型存储的特点是,无论多久我们实际存储数据,我们将储存数据库中的字符串,这不足以填补空白。m的缺省值是1,虽然char将通过空间组成存储空间,但MySQL在访问数据时会忽略所有最后的空格,所以如果我们在实际数据中需要空间,那么就不能使用char类型来存储数据。

VARCHAR(M){ }属于动态存储长型,仅占实际存储的数据的长度,tinytext,文本的四种类型,mediumtext和单引号字符属于存储模式。它们都是动态内存长度类型。差异仅是最大长度限制。

交易优化

1。脏读:脏读意味着当事务访问数据并修改数据时,修改尚未提交到数据库。同时,另一个事务也访问数据,然后使用数据。

2。不能反复阅读:是指在一个事务读取同一数据多次。当这个交易还没有结束,另一个事务访问相同的数据。在第一个事务读取数据,两者之间,从第一个交易数据读取两次可能由于二交易性是不同的,这这样的事情发生,那是在一个事务读取两倍的数据是不同的,所以称为不可重复读取。

3、影像阅读是一种现象,发生在交易不独立执行,例如,第一个事务修改表中的数据,包括表中的所有数据行。同时,第二交易也修改表中的数据,这是插入一行到表中的新数据。然后,在未来,经营第一交易用户没有修改的数据行的表中,如果出现了一个幻觉。

,InnoDB支持事务隔离级别的信息如下:

1.read未遂

通常称为脏读(脏读),可以说是关于隔离度最低的事项:在普通的非锁定模式下,选择实现使我们能够看到数据可能不被启动的查询时间点数据,并且在这种隔离状态下是非一致读(读);

2.read犯

在该隔离级别,dirtyread不会出现,但非repeatablereads(不可重复读)和phantomreads(幻想)可能会出现。

三.可重复读

可重复读隔离级别是InnoDB默认的事务隔离级别,在可重复读隔离级别,不会有dirtyreads或不可重复读,但仍有可能phantomreads。

4.serializable

SERIALIZABLE隔离级别是在标准的事务隔离级别的最高水平。在设置SERIALIZABLE隔离级别,在交易中任何时候我们看到的数据是事务启动时的状态,是否有其他事务修改了一些数据期间。所以,phantomreads将不会出现在可序列化事务隔离级别。

八、可扩展设计的数据分割。

数据垂直分割

数据的垂直分割也可以称为垂直分割,想象数据库是由许多块和表格组成的。我们垂直地切割这些数据块,并将它们分散到多个数据库主机。

纵剪的优点

拆分数据库是简单而清晰的拆分规则;

应用程序模块清晰,易于集成;

数据维护方便,定位方便;

垂直分割的缺点

关联的部分不能在数据库级完成,需要在程序中完成;

对于访问非常频繁和数据表的数量仍然存在较大的性能平静,不能满足要求;

交易相对比较复杂;

分割到一定程度后,可伸缩性会遇到极限;

我读分段可能导致系统过渡复杂且难以维护。

数据的横向分割

数据的垂直分割基本上可理解为将数据按模块根据表,而横向分割不再是基于表或功能模块。一般来说,一个简单的水平分割主要是将表极其平凡的访问一些特定领域的规则和散多个表,每个表包含一部分数据。

水平分割的优点

在数据库表中完成了所有基本的结束;

我不会有一些超大数据量和高负载表瓶颈问题;

应用程序的总体结构是比较小的变化;

交易比较简单;

只要能够定义分割规则,基本上难以满足可伸缩性;

水平分割的缺点

分割规则比较复杂,很难对整个数据库进行抽象,以满足分割规则的要求;

数据维护难度增加,手动定位数据更加困难;

系统各模块耦合度的应用比较高,可能会影响后续数据的分辨率会带来一些困难。

数据分割和集成中可能存在的问题

1。引入分布式事务的问题

这可能是将分布式事务跨多个数据库为多,只在一个单一的数据库小交易,由应用程序控制所有的小交易。当然,这要求我们要有足够的鲁棒性和俄罗斯应用,当然,给应用带来了一些技术上的困难。

2的问题。交叉节点的加入

建议通过应用程序进行处理。首先,提取相应的驱动结果集在mysqlserver在驾驶台的位置,然后提取相应的数据根据驱动结果集,然后到MySQL服务器的驱动表。

三.跨节点合并排序分页问题

从多个数据源并行获取数据,然后聚合应用程序。

九,使用缓存和搜索扩展性设计

通过引入缓存(redis,memcached),减少对数据库的访问和性能提高。

通过搜索的推出(Lucene,Solr,Elasticsearch),使用高效的全文索引和搜索引擎的分词算法,以及高效的数据检索、全文数据库和解决传统缓存软件不能解决的模糊查询、统计查询等功能。
以上就是这篇文章的全部内容,希望大家能喜欢。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部