加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql介绍 请不要继续采坑,一文展现MySQL最佳实践

发布时间:2022-10-14 03:33:45 所属栏目:MySql教程 来源:转载
导读: MySQL简介
MySQL从5.5版本之后做了大量的调整优化,市场占有率也逐步提升,在数据库流行度排行榜上不断攀升。
截止2021年6月,MySQL居于排行榜第二,距离第一的Oracle可谓是一步之遥,与第

MySQL简介

MySQL从5.5版本之后做了大量的调整优化,市场占有率也逐步提升,在数据库流行度排行榜上不断攀升。

截止2021年6月,MySQL居于排行榜第二,距离第一的Oracle可谓是一步之遥,与第三名Microsoft SQL Server也拉开了一定的差距。排名顺序短时间内恐难打破,与Oracle一起在DB界掌控雷电的局面估计还要长久持续下去。

数据源于DB-Engines Ranking

MySQL的成长蜕变

MySQL被甲骨文收购之后,其成长在不断往Oracle靠齐。随着版本的提升,长得越来越像Oracle,看这架势,甲骨文正要把MySQL打造成一款开源的小Oracle,作为一个逐利企业,甲骨文真的在给社会谋福利吗?这背后是否隐藏着不为人知的真相?

回归正题

这操心的事交给有能力的人吧,咱们还是看看如何用好MySQL吧。

实践适用于MySQL 5.5及以后版本,这也是目前MySQL使用率最高的版本。这里没有一招制胜的绝技,只有循序渐进的提升,希望看完本文之后能对你有一点的提升,也不枉楼主码了这么多字,哈哈。

备份

有句话叫“备份重于一切”,这个一点都过,一个系统如果没有备份,就像你打王者没买复活甲一样,一旦数据损坏就GG了,所以楼主再三要强调的是备份一定要做好,请自我核对是否已将做好备份了。

1、在做变更之前,你做备份了吗?哪怕只做了一个Update?

2、 备份做完了,有做过可用性校验吗?应对各种故障场景,能通过备份还原吗?

3、 定期做恢复测试了吗,是否已经制定了自动恢复测试计划和checklist?

4、binlog开启了吗?不要为了节省空间或者图省事把binlog关闭了,你可知有了binlog你才能做精准恢复。

监控

1、一个好的监控系统将让你处理问题起来事半功倍;

2、要经常检查errorlog信息,如果你不知道在哪,请查看mysql> SELECT @@global.log_error;

3、启用慢速查询日志,设置合适的long_query_time,可以使用mysqldumpslow程序来分析慢速查询日志;

配置

1、不要轻易去改默认值,除非你对该参数和业务需求有了充分的了解。

2、有些参数是静态参数,一旦确定就很难修改,所以在数据库安装部署时候,应该设置合适的值,如innodb_buffer_pool_size(5.7.5之后可在线修改), innodb_log_file_size, innodb_undo_tablespaces;

3、sync_binlog 、innodb_flush_log_at_trx_commit保证事务的一致性,根据实际业务做合理调整;

4、参数调优过程中要避免多个参数同时调整,即便系统得到了优化提升,你也无法确认是哪个参数起到了作用;

5、禁用Query Cache。在大多数情况下,查询缓存会导致性能下降,尤其是并发工作负载很高的情况,除非你对系统有了充分的了解;

6、5.6及以上版本,请开启Performance Schema,采用默认设置即可,方便数据库性能分析。

SCHEMA涉及及查询

1、所有表都有一个主键或一个非空的唯一键。所有InnoDB(和NDBCluster)表都需要有主键。如果不显式添加主键,则MySQL会添加一个内部(隐藏)的主键。但是,这些隐藏的主键不会像显式主键那样工作,它使用一个类似全局自动递增的计数器,因此在某种场景下它有可能成为瓶颈点(热点争用)。同样,基于ROW-based的binlog复制也会受到影响。

2、在给表添加主键时,应注意:

受限于MySQL索引存储方式,当主键比较大时,二级索引也会响应增大;

INNODB引擎是通过主键进行内部排序,所以顺序主键(如自增序列)性能要由于随机值主键;

3、事务尽可能的小,大事务往往带来较差的性能问题;

4、TEXT 、 BLOB 以及图片数据尽可能不要放在数据库中,在数据库只需存储一个位置连接指向文件系统。

5、索引可以提升性能,但是过多的索引会导致表臃肿,对表变更操作有较大影响,及时删除不用的索引。

系统

1、一定要考虑整个系统:操作系统、MySQL、CPU、磁盘、网络、其他硬件、应用程序等等。在一个地方看似有问题的东西在另一个地方可能有问题。这也意味着,如果您检测到应用程序中的查询响应时间很慢,请确保检查延迟是在MySQL中引入的,还是在网络中引入的。

2、为了获得最佳的I/O性能,请确保将数据文件、二进制日志、InnoDB撤消日志等拆分为单独的物理磁盘。当然,土豪可以SSD。

3、Network file systems (e.g. NFS)不要用mysql介绍,切记!

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!