我的编程空间,编程开发者的网络收藏夹
学习永远不晚

优化MySQL哪些地方需要注意

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

优化MySQL哪些地方需要注意

本文主要给大家简单讲讲优化MySQL哪些地方需要注意,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望优化MySQL哪些地方需要注意这篇文章可以给大家带来一些实际帮助。

1、控制适当的数据文件大小:

  数据量越大,数据文件的大小也会越大,索引文件也就越大,从而影响性能,会使性能急剧下降,所以,要限制数据库单表的数据量和数据文件大小;

2、碎片空洞注意:

 往往我们在删除表数据的时候,明明已经删除可是在底层只是被标记为删除,实际上并没有释放空间,所以要定期查看表的碎片,

show  table  status  ---发现表的碎片情况(查看实际数据data_length和空洞数据data_free的比例如果,data_free非常大,则说明该表需要优化了)

优化的方法是:optimize  table  表名;   或者  alter  table  表名 engine=innodb来重建表空间;

3、行存储格式注意:

  在MySQL5.7.9之后,innodb表的行格式由之前默认的compact变成了dynamic,二者的区别可以查看官方文档,但是,compact格式会节约20%的空间,同时在存储UTF8或UTF8MB4数据的时候,compact格式在存储时会尽量的节约空间,不对其中的空格进行存储;

4、正确使用索引:

  索引虽然能提升查询性能,但是会降低MySQL写数据的速度,同时,也会增大数据文件的大小,加的索引越多,写入数据越慢,数据文件也就越大。所以在设计索引的时候,会要求主键的字段类型一定要用数字类型,并且要尽可能的小,能用INT的,绝对不要用bigint。在设计二级索引的时候,只添加需要的索引,避免添加重复索引和冗余索引,针对长字符串字段,尽量添加前缀索引;

---如何正确使用索引:

①:MySQL在使用索引时,采用的是最左匹配原则,如果是多列索引:idx_a_b_c(a,b,c),则可以发挥索引功能组合有:a, (a,b)  (a,b,c)

②:MySQL在计算列里无法使用索引

③:MySQL在否定条件中不能使用索引

④:MySQL在join中连接字段类型如果不一致,则不能使用索引


*********************************************************************************

在MySQL中一些比较常用的系统参数:

1、general_log:

  建议在数据库正常服务时,将该参数关闭,因为他会记录提交到MySQL的一切东西,即浪费磁盘又影响效率。同时它也是分析问题的利器,可以在数据库有异常的时候,把它打开,然后截取一段时间的日志,以帮助定位问题;

2、query_cache_size:

  是用来缓存sql语句文本和对应查询结果的缓存空间。如果表没有变化,再次查询会直接返回结果,这是很高效的;如果表变化非常频繁,则要不断更新cache中的内容,并且这个时候所粒度非常大,反而会成为瓶颈。所以很多情况下会关闭这个选项,将参数设置0

3、tmp_table_size:

  在group by 或 distinct 的时候,如果sql语句用不到索引,就会使用系统内部临时表记录中间状态。如果tmp_table_size不够大,则MySQL会自动使用物理磁盘,这会对查询性能造成很大影响,增加此参数可以降低这种情况发生的概率;(注意:这是占用物理内存的,要考虑实际的内存空闲情况)

4、innodb_buffer_pool_size:

  innodb最只要的缓存,用来缓存innodb索引页面,undo页面及其他一些辅助数据,建议配置物理内存的50%--75%

5、innodb_buffer_pool_instances:

  这个参数,把原来一整块buffer pool分割为多块内存空间,每个空间独立管理自己的空闲链表、刷新链表、LRU及其他数据结构。这大大增加了并发性,能更有效利用缓存;

6、innodb_log_file_size和innodb_log_files_in_group

   这两个参数结合,决定了redo空间的大小,redo空间越大,可以存储的增量更新日志越大,有效降低buffer pool脏页面被淘汰的速度,同时减少了checkpoint的次数,降低磁盘IO置换率,从而提升数据库的写入效率。不过也有可能导致数据库异常退出时,恢复时间被拉长;

7、innodb_old_blocks_pct和innodb_old_blocks_time

  这两个参数控制buffer pool中缓存数据的过期和移动行为,二者结合设置,可以优化一些全表扫描带来的大规模更新buffer等问题;

8、innodb_numa_interleave:

  该参数避免出现内存被交换到SWAP分区,影响性能

9、innodb_autoinc_lock_mode:

  在innodb有自增列的情况下,在插入数据的时候,会自动产生自增值,这个参数是控制自增值生成的方式。目前有3个选项:0 1  2 ;使用2即in特人leave的,这样在insert数据的时候不会用到标记的auto-inc锁,避免了auto-inc的死锁问题,在insert...select场景下会极大提升性能,在做普通insert的时候,也会提升并发执行的效率;

 ---注意:这个时候产生的自增值不是连续的,同时binlog格式需要设置为ROW,才能保证数据的安全性和一致性;

10、innodb_flush_method

  innodb刷新数据和日志到磁盘文件的方式,默认为NULL,但其实如果是Unix系统上,默认是fsync;在使用SSD或PCIE类型的存储时,可以设置为O_DIRECT, 该参数会提升性能;

11、innodb_doublewrite

  如果底层存储时支持原子写的,则可以关闭两次写,以提升效率;

12、innodb_io_capacity

   如果使用SSD设备的时候,可以适当提高这个参数值,以加速flush的频率;

13、innodb_thread_concurrency

  在并发量大的实列上,增加这个值,可以降低innodb在并发线程之间切换的花销,以增加系统的并发吞吐量;

14、innodb_flush_log_at_trx_commit

  该参数的值0 1  2;0性能最好,但不安全; 1 最安全,但性能最差,如果使用的磁盘足够好,还是建议使用1  ,否则根据实际情况选择性的设置2

15、sync_binlog

  MySQL同步binlog到磁盘的方式, 1 最安全,但性能最差; 0性能最好,但最不安全。建议设置1

16、binlog_format

  MySQL的日志格式,在MySQL5.7.7以后,官方就默认为ROW了,这也是最建议的设置

17、binlog_order_commits

  事务在提交的时候写入binlog的顺序,这是双刃剑,如果打开,可以保证事务都以相同的顺序写入二进制文件,如果关闭则可以提升性能。根据实际情况决定吧

18、tx_isolation

  设置MySQL的隔离级别,推荐设置read committed,这在保证性能的前提下,同时设置binlog_format=ROW,确保通过binlog同步数据主从库的一致性,兼顾安全,满足绝大多数业务的需求; 

19、slave_parallel_workers

  在进行多线程复制的时候,如果设置此参数为非零值,则可以打开多线程并发执行回放日志的操作,以提升slave的同步性能;

优化MySQL哪些地方需要注意就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

优化MySQL哪些地方需要注意

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

优化网站需要注意哪些细节

这篇文章将为大家详细讲解有关优化网站需要注意哪些细节,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  在网站搭建初期就完成所有便于优化的框架和内容能够缩短整个网站优化时间,一个完整的便于优化的网站包含:满
2023-06-10

SEO优化需要注意些什么

这篇文章主要为大家展示了“SEO优化需要注意些什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SEO优化需要注意些什么”这篇文章吧。SEO优化需要注意以下几点:一、分析关键词关键词定位是最重要
2023-06-10

网站优化有哪些误区需要注意

这篇文章主要为大家展示了“网站优化有哪些误区需要注意”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“网站优化有哪些误区需要注意”这篇文章吧。网站优化是个很系统的工作,有很多细节需要注意,搞得好搜索
2023-06-10

网站优化需要注意的细节有哪些

这篇文章主要介绍“网站优化需要注意的细节有哪些”,在日常操作中,相信很多人在网站优化需要注意的细节有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网站优化需要注意的细节有哪些”的疑惑有所帮助!接下来,请跟
2023-06-13

网站优化需要注意的问题有哪些

这篇文章主要介绍“网站优化需要注意的问题有哪些”,在日常操作中,相信很多人在网站优化需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网站优化需要注意的问题有哪些”的疑惑有所帮助!接下来,请跟
2023-06-10

Mysql中varchar类型一些需要注意的地方

varchar的存储规则4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)。 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字
2022-05-27

java继承中需要注意的地方有哪些

这篇文章给大家分享的是有关java继承中需要注意的地方有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、注意点(1)Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。(2)在Java中,所
2023-06-15

网站建设时需要注意哪些优化细节

这期内容当中小编将会给大家带来有关网站建设时需要注意哪些优化细节,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、制定合理的title标签:对于搜索引擎而言,在分析网页结构时对于title标签的重要性是不
2023-06-07

URL优化需要注意什么

本篇内容介绍了“URL优化需要注意什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1,URL要简短,越短越好  无论是用户还是搜索引擎
2023-06-10

MySQL调优 优化需要考虑哪些方面 - G

MySQL调优 优化需要考虑哪些方面 优化目标与方向定位总体目标:使得响应时间更快,吞吐量更大。 (throughout --- 吞吐量:单位时间内处理事务的数量)如何找到需要优化的地方使用反馈。比如做出一些操作后导致效率降低分析日志。监控服务器资源。系统,
MySQL调优  优化需要考虑哪些方面 - G
2016-05-20

Python并发编程中需要注意哪些接口优化?

Python是一种高级编程语言,具有简单易学、可读性强等特点,因此在并发编程中也得到了广泛的应用。然而,Python的并发编程在性能
2023-05-26

新网站SEO优化有哪些需要注意的问题

这篇文章主要讲解了“新网站SEO优化有哪些需要注意的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“新网站SEO优化有哪些需要注意的问题”吧!1、网站url要有规律并且稳定对于刚很多刚开始
2023-06-10

搜索引擎优化需要注意的问题有哪些

这篇文章主要介绍“搜索引擎优化需要注意的问题有哪些”,在日常操作中,相信很多人在搜索引擎优化需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”搜索引擎优化需要注意的问题有哪些”的疑惑有所帮助!
2023-06-10

编程热搜

目录