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介绍,切记! (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |