大规模数据库的性能和伸缩性的优化

大规模数据库的性能和伸缩性的优化,第1张

在需要支持移动/平板电脑应用及普通桌面浏览器访问的时代,网站的普及率和有效性很大程度上取决于其可用性和性能。一个访问缓慢的网站会使得访问者或潜在的客户流失,并导致商业的失败。IT培训认为一个访问速度相当快的网站将会决定访客是否会使用网站提供的产品或服务。

拥有大规模数据库的网站始终需要适当的关注、配置、优化、调整和维护,以确保网站的快速加载。这篇文章将讨论如何优化有海量数据的MySQL数据库。

选择InnoDB作为存储引擎

大型产品的数据库对于可靠性和并发性的要求较高,InnoDB作为默认的MySQL存储引擎,相对于MyISAM来说是个更佳的选择。

优化数据库结构

组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。

设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。

对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。

仅创建你需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新 *** 作的执行时间。

InnoDB的ChangeBuffering特性

InnoDB提供了changebuffering的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表 *** 作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的changebuffer将会更改缓存到辅助索引条目,从而避免因不能立即从磁盘读取页面而导致耗时的I/O *** 作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL55及更高版本。

bulk_insert_buffer_size参数相对增大------用于存放insert语句的缓存空间,增大可以提高insert的速度

对于insert频率较大的表,可以适当删除不常用的索引,可以减少对表索引维护的开销

在业务允许的情况下,也就是说不需要事物机制,建议用myisam引擎,相比较而言,myisam比innodb的批量插入要快很多,当然还有archive引擎,不过这个引擎很少用,所以建议还是用myisam

1、explain:解释sql的执行计划,后边的sql不执行

2、explain partitions :用于查看存在分区的表的执行计划

3、explain extended:待验证

4、show warnings:

5、show create table:查看表的详细的创建语句,便于用户对表进行优化

6、show indexes :产看表的所有索引,show indexes from table_name,同样也可以从information_schemastatistics表中获得同样的信息。cardinality列很重要,表示数据量。

7、show tables status: 查看数据库表的底层大小以及表结构,同样可以从information_schematables表中获得底层表的信息。

8、show [global|session]status:可以查看mysql服务器当前内部状态信息。可以帮助却行mysql服务器的负载的各种指标。默认是session。同information_schemaglobal_status和information_schemasession_status

9、show [global|session] variables :查看当前mysql系统变量的值,其中一些值能影响到sql语句的执行方式。同information_schemaglobal_variables和information_schemasession_variables;

10、information_schema:包含的表的数量和mysql的版本有关系。

select ename from emp where dept_no in (select dept_no from dept where dept_cat='A')

select aename from emp a,dept b where adept_no=bdept_no and bdept_cat='A'

我列举几个我熟悉的,

1,存储引擎,根据应用选择合适的引擎

2,索引

----这个就有很多文章了,具体需要你自己去了解

3,sql语句优化,查询条件的选择之类

4,mysql自身系统配置,需要针对应用去定制

5,表的选择,临时表,或者分区表,也需要针对应用的情况去选择使用

以上就是关于大规模数据库的性能和伸缩性的优化全部的内容,包括:大规模数据库的性能和伸缩性的优化、MySQL 数据库,一天一万条以上的增量,怎么优化、mysql数据库如何优化谁能给出点具体的解决方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10130754.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存