mysql tuning

磁盘调度scheduler Linux系统提供了多种I/O调度器,通过/sys/block/sdb/queue/scheduler可以查看和设置。主要调度器包括:mq-deadline(数据库和生产环境首选,低延迟稳定)、kyber(NVMe SSD专用,极简低延迟)、bfq(桌面系统适用,公平调度)和none(NVMe最佳选择,零开销)。查看当前调度器使用cat命令,临时切换用echo写入,永久生效需修改GRUB或udev规则。生产服务器推荐保持mq-deadline,NVMe存储可切换为none。 阅读详情
 

全栈必备——MySQL性能调优 

标签: mysql数据库性能fullstack全栈必备
  717人阅读  评论(0)  收藏  举报
  分类:

目录(?)[+]

对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库……林林总总,但是第一必备技能还应该是MySQL。从LAMP的兴起,到Mariadb的出现,甚至PG的到来,熟练的MySQL技能都是大有用武之地的。

MySQL数据库技术的方方面面也是很多,这里只涉及必备的性能调优,推崇从下向上的性能调优,主要包括运行环境,配置参数,SQL性能,和系统架构设计调优。

运行环境调优

这里是Linux的天下,MySQL 运行环境的调优往往和Linux的内核调优一并完成。当然了,对云服务RDS 也有一定的参考作用。

调整Linux默认的IO调度算法.

IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯 (elevator),而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做 cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation).

IO对数据库的影响较大,linux默认的IO调度算法为cfq,需要修改为deadline,如果是SSD或者PCIe-SSD设备,需要修改为noop,可以使用下面两种修改方式。

1、在线动态修改,重启失效。 

echo “deadline” > /sys/block/sda/queue/scheduler

2、修改/etc/grub.conf,永久生效。 
修改/etc/grub.conf配置文件,在kernel那行增加一个配置,例如: 
elevator=deadline

主要关注elevator这个参数,设置内核的话需要重启系统才能生效。

禁用numa特性

新一代架构的NUMA不适合跑数据库,NUMA是为了内存利用率的提高,但反而可能导致一CPU的内存尚有剩余,另外一个却不够用了,发生swap的问题,因此一般建议关闭或修改NUMA的调度。

1、修改/etc/grub.conf关闭NUMA,重启后生效。


numa=off

2、修改/etc/init.d/mysql或mysqld_safe脚本,设置启动mysqld进程时的NUMA调度机制,如 numactl –interleave=all。

修改swappiness设置

swappiness是linux的一个内核参数,用来控制物理内存交换出去的策略.它允许一个百分比的值,最小的为0,最大的为100,改值默认是60.这个设置值到底有什么影响呢? 

vm.swappiness设置为0表示尽量少使用swap,100表示尽量将inactive的内存页交换到swap里或者释放cache。inactive内存的意思是程序映射着,但是”长时间”不用的内存。我们可以利用vmstat查看系统里面有多少inactive的内存。

# vmstat -a 1

这个值推荐设置为1,设置方法如下,在/etc/sysctl.conf文件中增加一行。 
vm.swappiness = 1

扩大文件描述符

这个是经常修改的参数,高并发的程序都会修改.

1、动态修改,重启失效,只能使用root,并且当前session有效。


ulimit -n 51200

2、修改配置文件,永久生效。 
在/etc/security/limits.conf配置文件中增加

* hard nofile 51200

* soft nofile 51200

面向session的进程文件描述符的修改稍有不同,在云上的修改也略有差异,可以参见一样的“open too many files”

优化文件系统挂载参数。

对于文件系统,如无特殊要求,最好采用ext4.

文件系统挂载参数是在/etc/fstab文件中修改,重启时候生效。 
noatime表示不记录访问时间,nodiratime不记录目录的访问时间。 
barrier=0,表示关闭barrier功能.

barrier的主要目的是为了保证磁盘写数据的安全性,但是会降低性能。如果有BBU之类的电池备份电源保证控制卡不瞬间掉电,那么这个功能就可以放心大胆的关闭。

配置参数调优

my.cnf中的配置参数调优取决于业务,负载或硬件,在慢内存和快磁盘、高并发和写密集型负载情况下,都需要特殊的调整。

基本配置

query_cache_size 
query cache是一个众所周知的瓶颈,甚至在并发并不多时也如此。 最 好是一开始就停用,设置query_cache_size = 0,并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。如果已经启用了query cache并且还没有发现任何问题,query cache可能有用。如果想停用它,那就得小心了。

innodb_buffer_pool_size

缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。

innodb_log_file_size

redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。从MySQL 5.5之后,崩溃恢复的性能的到了很大提升,可以同时拥有较高的写入性能和崩溃恢复性能。在MySQL 5.6里可以被提高到4GB以上。如果应用程序需要频繁的写入数据,可以一开始就把它这是成4G。

max_connections 
max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。

back_log 
要求 mysql 能有的连接数量。当主要mysql线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间检查连接并且启动一个新线程。back_log指明在mysql暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,需要增加它,换句话说,该值对到来的tcp/ip连接的侦听队列的大小。

Innodb配置

innodb_file_per_table

这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF)或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。MySQL 5.6中,这个属性默认值是ON。

innodb_flush_log_at_trx_commit

默认值为1,表示InnoDB完全支持ACID特性。当关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据, 所以一遍只适用于备份节点。

innodb_flush_method

这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。sysbench是一个可以帮助你决定这个选项的好工具。

innodb_log_buffer_size

这项配置决定了为尚未执行的事务分配的缓存。但是如果事务中包含有二进制大对象或者大文本字段的话,看Innodb_log_waits状态变量,如果它不是0,增加innodb_log_buffer_size。

其他配置

log_bin

如果数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的。就算只有一个服务器,如果你想做基于时间点的数据恢复,这也是很有用的。二进制日志一旦创建就将永久保存。如果不想让磁盘空间耗尽,你可以用 PURGE BINARY LOGS 来清除旧文件,或者设置 expire_logs_days 来指定过多少天日志将被自动清除。记录二进制日志不是没有开销的,所以如果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项。 

interactive_timeout

服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 client_interactive 选项的客户。 默认数值是28800,建议改为7200。

table_open_cache

MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上。

max_allowed_packet

接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出 
skip_name_resolve

当客户端连接数据库服务器时,且当DNS很慢时,建立连接也会很慢。因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找。

SQL 语句调优

在应用层,通过pt工具和慢查询日志的配合,可以轻松地分辨出全表扫描的语句。

基本原则

  • 避免全表扫描
  • 建立索引
  • 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理 
  • 尽量避免大事务操作,提高系统并发能力
  • 使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效。尽量避免使用游标,因为游标的效率较差。

雕虫小技

关于where 后的条件

  • 应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。 
  • 应尽量避免在 where 子句中使用 or 来连接条件,可以考虑使用union 代替
  • in 和 not in 也要慎用,对于连续的数值,能用 between 就不要用 in,exists 代替 in
  • 尽量避免在 where 子句中对字段进行表达式操作和函数操作

关于数据类型

  • 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

  • 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为变长字段存储空间小,对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

  • 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。

  • 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

关于临时表

  • 避免频繁创建和删除临时表,以减少系统表资源的消耗。对于一次性事件, 最好使用导出表。

  • 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。

  • 如果使用到了临时表,在最后将所有的临时表显式删除时,先 truncate table ,然后 drop table ,这样可以避免系统表的较长时间锁定。

关于索引

  • 先应考虑在 where 及 order by 涉及的列上建立索引。
  • 在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件 时才能保证系统使用该索引, 否则该索引将不会 被使用, 并且应尽可能的让字段顺序与索引顺序相一致。
  • 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert和update 的效率,因为 insert 或 update 时有可能会重建索引,所以视具体情况而定。一个表的索引数最好不要超过7个,若太多则应考虑一些不常使用到的列上建的索引是否有必要.

数据库架构调优

从底层来到了应用层,最终到架构层,然而脱离业务逻辑谈架构就是耍流氓。数据库架构同样是依赖业务系统的,稳定而又弹性地服务业务系统是关键。架构调优的方向有: 

  • 分区分表
  • 业务分库
  • 主从同步与读写分离
  • 数据缓存
  • 主从热备与HA双活
  • …..
MySQL性能调优的10个方法 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现在提到全文检索,没人会用 MYSQL 了),你应该默认选择 InnoDB 。 你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快,这是因为: MyISAM 只缓存索... 阅读详情

相关推荐

块设备IO完成软中断平衡参数(rq_affinity)的意义

rq_affinity, 块设备IO完成软中断的平衡 By default this value is set to 1, which means that once an I/O request has been completed by the block device, it will be sent back to the "group" of CPUs that the request...

yiyeguzhou100的专栏 3691

Linux 磁盘I/O原理

1、iostat 2、iotop 3、pidstat 4、磁盘性能 5、磁盘原理

青梅煮酒 1136

MySQL中禁用Oracle的SQL Tuning Advisor

SQL Tuning Advisor是Oracle数据库中一个非常有用的工具,它可以分析查询语句的性能,并提供有关如何改进查询性能的建议。然而,对于那些使用MySQL数据库的开发人员和管理员来说,他们可能想知道如何在MySQL中禁用类似的SQL Tuning Advisor功能。请注意,如果您使用的是MySQL的特定分发版,例如Percona Server或MariaDB,可能有一些特定的配置选项和建议,您可以在相关的文档中找到更多信息。这是重要的,因为MySQL的不同版本可能具有不同的配置选项和功能。

带你成为别人眼中的大佬! 222

Linux-磁盘调度策略更改

将changeio.txt内容追加到 /etc/rc.d/rc.local 内【凝思操作系统】中括号内的就是当前使用的IO调度算法。一定是追加命令 >>

weixin_37846115的博客 1106

【MySQL】MySQL数据库SQL优化工具 SQL Tuning Expert for MySQL(收费)

1.概述 SQL Tuning Expert for MySQL 是 Tosska 公司推出的针对MySQL的SQL优化工具。 该工具不仅让DBA或者SQL开发人员,轻松阅读和理解执行计划,而且能产生等价SQL,并找出最快的等价SQL. 官网下载 https://www.tosska.cn/tosska-sql-tuning-expert-for-mysql-tsem-free-download-zh/ 产品介绍 https://www.tosska.cn/tosska-sql-tuning-expert.

九师兄 2419

想学嵌入式但没开发板?试试这个免费的STM32虚拟仿真平台(含LVGL界面教程)

本文介绍如何利用免费的STM32虚拟仿真平台学习嵌入式开发,特别适合预算有限或零硬件基础的学习者。通过详细的LVGL界面开发教程,展示虚拟仿真在嵌入式学习中的高效性和实用性,涵盖环境搭建、代码实现到实机迁移的全流程,助力快速掌握嵌入式开发核心技能。

weixin_29266647的博客 306

mysql tuning primer_mysql检测工具tuning-primer.sh

mysql检测工具tuning-primer.shtuning-primer.sh帮助我们去查看一下mysql运行情况,产生报告,给出一些优化建议;下载及使用:1.wget http://www.day32.com/MySQL/tuning-primer.sh2.将tuning-primer.sh拷贝到my.cnf同级目录3.chmod +x tuning-primer.sh 执行:sh tuni...

weixin_35719775的博客 251

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

mysql tuning primer_mysql性能优化之Tuning-primer.sh的使用

Tuning-primer.sh 检测mysql当前的运行情况,产生报告,并给出优化建议。2.将tuning-primer.sh拷贝到my.cnf同级目录3.chmod +xtuning-primer.sh执行:sh tuning-primer.sh[root@DG-webDB software]#./tuning-primer.sh allUsing login values from ~/...

weixin_36296827的博客 340

reCAPTCHA v3隐形验证码实战:5分钟教你用Capsolver获取0.9高分令牌

本文提供了一份reCAPTCHA v3隐形验证码的实战指南,详细解析其浏览器评分机制,并手把手教你使用Capsolver自动化获取0.9高分令牌。内容涵盖从环境侦察、关键参数(sitekey与pageAction)提取,到API调用、结果轮询及令牌使用的完整流程,旨在帮助开发者高效绕过自动化交互障碍。

weixin_29314405的博客 347

C++继承与多态 - 继承多态原理01

C++继承多态原理讲解

大秦坑王的专栏 2977

mysql tuning.py_4 个好用的 MySQL 调优工具推荐

本篇文章给大家推荐4个mysql 优化的工具,你可以使用它们对你的mysql进行一个体检,生成awr报告,让你从整体上把握你的数据库的性能情况。对于正在运行的mysql性能如何?参数设置的是否合理?账号设置的是否存在安全隐患是否了然于胸?俗话说工欲善其事,必先利其器,定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要手段。今天和大家分享几个mysql 优化的工具,你可以使用它们对你...

weixin_31586247的博客 309

【域控制器EMC】域控制器EMC设计总结

汇总项目设计当中关于EMC的设计要点,主要从原理设计、Layout、结构、外设部分总结。满足要求的器件和合理的电路能降低电磁干扰;正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。结构件设计也会对EMC性能产生影响。

weixin_42098658的博客 1259

MySQL 优化工具 tuning-primer.sh 使用教程

MySQL 优化工具 tuning-primer.sh 使用教程 项目介绍 tuning-primer.sh 是一个用于 MySQL 数据库性能调优的脚本工具。该工具由 Matthew Montgomery 最初开发,并托管在 Day32.com。GitHub 上的 BMDan 对该项目进行了更新和改进,以适应新版本的 MySQL 和 Percona Server。该脚本能够分析 MySQL 服务...

gitblog_00833的博客 920

利用Dify构建文档内容的分析对比

本次主要做了一些workflow和Agent的应用实现,供大家参考。主要目的是为了进行两个内部报告文件的内容对比,特别是报告中的各类审批表、申请表、推荐表和流程对比,本地数据通过知识库方式分别加载到两个知识库中,编制工作流针对同一个问题进行知识库检索,之后将查询结果进行合并,再一起提交给LLM进行对比,最终将对比分析结果以markdown方式返回显示。主要包括如何构建知识库,如何设计workflow、如何将工作流发布为工具、如何设计提示词、如何在agent中引入前面发布的工具,最终通过agent实现与用户交

hhue2007的专栏 2522

《AgentScope-Java 深入浅出教程》第8章 工具高级特性

掌握工具组、预设参数、执行上下文等高级特性。

步子哥的博客 265

mysql性能分析工具之tuning-primer

tuning-primer是mysql的一个优化工具,针于mysql的整体进行一个体检,对潜在的问题,给出优化的建议。将上述页面的内容粘贴进来。

雅冰石的专栏 362

风电光伏功率预测竞赛精华总结:技术解析与实战经验

本文深度解析新能源功率预测竞赛的技术要点与实战经验。首先介绍了风电、光伏功率预测对电网调度优化、降低运营风险的重要性,以及多个竞赛的基本概况。在数据特征分析部分,详细探讨了气象预报数据和功率数据的特征,包括时间周期性、数据质量问题及处理方法。针对异常值检测、数据标准化和特征工程(如时间特征、统计聚合特征、风速风向特征和滞后特征)提供了具体的技术实现方案。文章为新能源功率预测提供了实用的技术指导,对相关竞赛和实际应用具有重要参考价值。

算法工程师 204

mysql performance tuning_Mysql Tuning

為了找出 MySQL 緩慢的原因, 跟如何 Tuning, 用了好幾個工具, 不小心找到神秘好心人寫的基本上, 它是利用 MySQL 本身提供的訊息, 做點判斷, 同時提供一些建議.以下是它執行產出的結果. 它建議 mysql 至少跑超過 48 小時之後, 收集的資訊跟建議會比較準確.-- MYSQL PERFORMANCE TUNING PRIMER --- By: Matthew Montgo...

weixin_31762925的博客 249

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySQL 调优脚本 tuning-primer.sh 使用指南

MySQL 调优脚本 tuning-primer.sh 使用指南 一、项目目录结构及介绍 本指南基于从GitHub获取的tuning-primer.sh项目。请注意,实际仓库地址可能有所变化,请以最新的仓库信息为准。 由于直接访问提供的链接指向了一个不完全匹配的描述(实际应指向BMDan/tuning-primer sh,但遵循假设指令中的新仓库名),以下结构和说明基于类似开源调优脚本的一般组织方...

gitblog_00529的博客 575

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MySQL 参数调优工具--tuning-primer

最近发现了一款有意思的工具,tuning-primer.sh,它其实是一个脚本。下载地址:http://www.day32.com/MySQL/tuning-primer.sh 这个脚本是通过 ”show statu like ...”和 “show variables like ...”获取信息,来生成一些服务器参数调整的建议。目前它支持以下内容: Slow Query Lo...

weixin_30362233的博客 137

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySQL的性能调优工具:tuning-primer.sh

请查收附件

dodomail的专栏 187

mysql监测工具tuning-primer.sh

mysql的运算情况,我们可以一步一步的去查看,分析。这样需要一定的时间,今天推荐给大家一个不错的脚本tuning-primer.sh,可以帮助我们去查看一下msyql的运行情况,产生报告和给出一些建议,我们可以根据这些建议,结合mysql服务器的实际情况,对mysql进行优化。

秋韩 3752

MySQL调优神器:tuning-primer.sh深度指南

MySQL调优神器:tuning-primer.sh深度指南 项目介绍 tuning-primer.sh 是一款由 Matthew Montgomery 原创并最初托管在 Day32.com 的MySQL性能调优脚本。此版本经BMDan更新与改进,专为支持新版本的MySQL设计。通过分析MySQL服务器的当前配置及运行状态,该脚本将自动生成一份详尽的调优报告,并提供一系列针对性的优化建议。它不仅...

gitblog_00448的博客 495

mysql performance tuning_Performance Tuning MySQL

通常来说,MySQL性能调优是非常复杂的一件事,不是简单的修改参数就可以完成的。需要综合考虑。而且找出性能瓶颈也非易事。但是通常我们有以下的几种方法找到蛛丝马迹。通过下面的几种方法发现瓶颈以后,我们才能确定下一步应该怎么做^_^(1)查看系统状态,比如top,vmstat,sar,iostat,dstat等(2)进入MySQL里查看MySQL的连接数及相应的SQL(show processlist...

weixin_36192410的博客 256
上一篇: linux basic knowledge
下一篇: ubuntu linux root password
screaming
博客等级 码龄19年 60粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值