mysql数据库如何优化谁能给出点具体的解决方案

mysql数据库如何优化谁能给出点具体的解决方案,第1张

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的版本有关系。

“mysql”达到1亿级别如何设计优化?

1首先可以考虑业务层面优化,即垂直分表。

垂直分表就是把一个数据量很大的表,可以按某个字段的属性或使用频繁程度分类,拆分为多个表。

如有多种业务类型,每种业务类型入不同的表,table1,table2,table3

如果日常业务不需要使用所有数据,可以按时间分表,比如说月表。每个表只存一个月记录。

2架构上的优化,即水平分表。

水平分表就是根据一列或多列数据的值把数据行放到多个独立的表里,这里不具备业务意义。

如按照id分表,末尾是0-9的数据分别插入到10个表里面。

可能你要问,这样看起来和刚才说的垂直分表没什么区别。只不过是否具备业务意义的差异,都是按字段的值来分表。

实际上,水平分表现在最流行的实现方式,是通过水平分库来实现的。即刚才所说的10个表,分布在10个mysql数据库上。这样可以通过多个低配置主机整合起来,实现高性能。

最常见的解决方案是cobar,这个帖子介绍的比较完善,可以看看。

1、建表要科学,业务允许的话,尽可能的控制字段不要太多,合理的限制字段的类型和长度;

2、在常用的查询字段上建立索引;

3、不要太被第几范式之类的东西迷惑,最后是按着规范来了,每个查询都要join个5、6个表谁看着也不舒服,要合理的冗余(这个要根据自己业务来的);

4、多用业务层的缓存,比如字典库的东西不算多的话,都缓存起来吧,这样用的时候就不用select了。

5、能用TinyInt不用int,能用int不用char等等,效率来说,还是数字大于字符的;

6、多看看数据库的样例表,能学到很多东西的。

先想到了这么多,希望能帮助到你。

现在的服务器都很NB了,只要不是滥用缓存的话,就不用太在意内存大小了。

以上就是关于mysql数据库如何优化谁能给出点具体的解决方案全部的内容,包括:mysql数据库如何优化谁能给出点具体的解决方案、“mysql”达到1亿级别如何设计优化、如何优化数据库的性能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存