如何在 MySQL 中缩小 / 清除 ibdata1文件

I am using MySQL in localhost as a "query tool" for performing statistics in R, that is, everytime I run a R script, I create a new database (A), create a new table (B), import the data into B, submit a query to get what I need, and then I drop B and drop A.

It's working fine for me, but I realize that the ibdata file size is increasing rapidly, I stored nothing in MySQL, but the ibdata1 file already exceeded 100 MB.

I am using more or less default MySQL setting for the setup, is there a way for I can automatically shrink/purge the ibdata1 file after a fixed period of time?

转载于:https://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql

csdnceshi67
bug^君 Further reference: ibdata1 grows exponentially when innodb_file_per_table is configured
4 年多之前 回复

8个回答

That ibdata1 isn't shrinking is a particularly annoying feature of MySQL. The ibdata1 file can't actually be shrunk unless you delete all databases, remove the files and reload a dump.

But you can configure MySQL so that each table, including its indexes, is stored as a separate file. In that way ibdata1 will not grow as large. According to Bill Karwin's comment this is enabled by default as of version 5.6.6 of MySQL.

It was a while ago I did this. However, to setup your server to use separate files for each table you need to change my.cnf in order to enable this:

[mysqld]
innodb_file_per_table=1

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

As you want to reclaim the space from ibdata1 you actually have to delete the file:

  1. Do a mysqldump of all databases, procedures, triggers etc except the mysql and performance_schema databases
  2. Drop all databases except the above 2 databases
  3. Stop mysql
  4. Delete ibdata1 and ib_log files
  5. Start mysql
  6. Restore from dump

When you start MySQL in step 5 the ibdata1 and ib_log files will be recreated.

Now you're fit to go. When you create a new database for analysis, the tables will be located in separate ibd* files, not in ibdata1. As you usually drop the database soon after, the ibd* files will be deleted.

http://dev.mysql.com/doc/refman/5.1/en/drop-database.html

You have probably seen this:
http://bugs.mysql.com/bug.php?id=1341

By using the command ALTER TABLE <tablename> ENGINE=innodb or OPTIMIZE TABLE <tablename> one can extract data and index pages from ibdata1 to separate files. However, ibdata1 will not shrink unless you do the steps above.

Regarding the information_schema, that is not necessary nor possible to drop. It is in fact just a bunch of read-only views, not tables. And there are no files associated with the them, not even a database directory. The informations_schema is using the memory db-engine and is dropped and regenerated upon stop/restart of mysqld. See https://dev.mysql.com/doc/refman/5.7/en/information-schema.html.

csdnceshi65
larry*wei Regarding step 1, here's a decent and fast way to do it: stackoverflow.com/a/19204404/925058. Also, you can adopt the same principle when re-importing from dump
一年多之前 回复
csdnceshi68
local-host Thanks for this answer. Actually information_schema cannot be drop. So we have to ignore it.
2 年多之前 回复
csdnceshi62
csdnceshi62 Using Server version: 5.7.14 MySQL Community Server (GPL) on Windows 10 as part of WampServer. innodb_file_per_table is not set by default. I have only one big ibdata1 file. Perhaps the default setting is only for ver 5.6.x only.
2 年多之前 回复
weixin_41568131
10.24 Just to clarify: You need to put "innodb_file_per_table=1" into your file. "innodb_file_per_table" is not enough.
接近 4 年之前 回复
csdnceshi72
谁还没个明天 Backing up to a .sql dump and restoring is completely infeasible for a 200GB database. Do you have a better solution? Can't I convert my tables to MyISAM and back again?
接近 4 年之前 回复
csdnceshi78
程序go This didn't quite work for me. After backing up my tables, dropping them and deleting the files specified above, I was unable to bring the mysql server back up (I got: InnoDB: Error: space header page consists of zero bytes in data file ./ibdata1 among other things). Even uninstalling and purging the mysql packages would not get it to work. I had to uninstall and manually delete the /var/lib/mysql directory completely and reinstall mysql.
4 年多之前 回复
weixin_41568127
?yb? Like some said you don't need to delete anything. You can just run mysqlcheck -op database_name as I understand it that is basically just another way of running alter table mysql command. Where you do need to still delete things is if you want to get rid of that big ibdata1 file. If you don't drop the database and recreate as explained you will still have that big file sitting there taking up space needlessly.
大约 5 年之前 回复
csdnceshi57
perhaps? I've run out of space in my server because of the ibdata1 file, so I cannot even dump the databases. Would it be the same to just move the files at /var/lib/mysql (except "mysql", "ibdata1", "ib_logfile0" and "ib_logfile1") and then follow the steps? See stackoverflow.com/questions/2482491/…
5 年多之前 回复
weixin_41568208
北城已荒凉 but if I optimize all tables (hence extracting the data from the ibdata file) - can I stop mysql, delete the ibdata, start mysql (which will rebuild the ibdata file)? Or will the tables be corrupt?
接近 6 年之前 回复
csdnceshi74
7*4 See also What is the best way to reduce the size of ibdata in mysql? over at Database Administrators.
大约 6 年之前 回复
weixin_41568196
撒拉嘿哟木头 MySQL just caused me serious problems. I edited your answer in the hope this doesn't happen to somebody else. i.stack.imgur.com/kNXoo.png I dumped all of my databases, except for mysql. Notice that error in the middle of it on performance_schema? Yeah, well, my BIG DUMP.SQL file only contains the databases after that. I didn't notice until after I'd dropped my db's... I just lost ~15 databases!
大约 6 年之前 回复
csdnceshi75
衫裤跑路 Yes, ibdata1 is expected to be present along with the other files. The ibdata1 file will still hold metadata about tables, the undo log and buffers.
大约 6 年之前 回复
csdnceshi50
三生石@ For whatever reason, I have the ibdata1 file (~1GB in size) AND I have the .ibd files that represent the tables in each of my database folders. I'm not sure why I have both, since I have the "innodb_file_per_table" option set. I assume that it wouldn't be creating the individual files if that setting wasn't set. So should the ibdata1 file still be there even with that option set?
大约 6 年之前 回复
csdnceshi66
必承其重 | 欲带皇冠 +1 FWIW, MySQL 5.6 enables innodb_file_per_table by default.
6 年多之前 回复
csdnceshi75
衫裤跑路 That can be handy but I do not think it will shrink the ibdata1 file. The command will move data and index pages to a separate file, but ibdata1 will still hold metadata and buffers and still claim as much space as before.
6 年多之前 回复
csdnceshi53
Lotus@ I don't know if this is a recent thing but once the innodb_file_per_table option is enabled you can simply run "ALTER TABLE <tablename> ENGINE=InnoDB" (even if it's already InnoDB) and it will move the table in to its individual file. No need to drop databases and such.
6 年多之前 回复
csdnceshi64
游.程 a little cross-link: stackoverflow.com/questions/3927690/…
6 年多之前 回复
csdnceshi75
衫裤跑路 Don't bother to drop information_schema. It is in fact just a bunch of read-only views, not tables. And there are no files associated with the them. There isn't even a directory for the database. The informations_schema is using the memory db-engine and is dropped and regenerated upon stop/restart of mysqld. See dev.mysql.com/doc/refman/5.5/en/information-schema.html. Regarding performance_schema I haven't used that schema myself.
大约 7 年之前 回复
csdnceshi55
~Onlooker I tried that on a test server, it wouldn't let me (logged in as the mysql root/admin user) drop information_schema. So, no.
大约 7 年之前 回复
csdnceshi61
derek5. What about information_schema and performance_schema?
大约 7 年之前 回复
csdnceshi59
ℙℕℤℝ There's no need for the "=1" according to dev.mysql.com/doc/refman/5.1/en/…
7 年多之前 回复

Quickly scripted the accepted answer's procedure in bash:

#!/usr/bin/env bash
DATABASES="$(mysql -e 'show databases \G' | grep "^Database" | grep -v '^Database: mysql$\|^Database: binlog$\|^Database: performance_schema\|^Database: information_schema' | sed 's/^Database: //g')"
mysqldump --databases $DATABASES -r alldatabases.sql && echo "$DATABASES" | while read -r DB; do
    mysql -e "drop database \`$DB\`"
done && \
    /etc/init.d/mysql stop && \
    find /var/lib/mysql -maxdepth 1 -type f \( -name 'ibdata1' -or -name 'ib_logfile*' \) -delete && \
    /etc/init.d/mysql start && \
    mysql < alldatabases.sql && \
    rm -f alldatabases.sql

Save as purge_binlogs.sh and run as root.

Excludes mysql, information_schema, performance_schema (and binlog directory).

Assumes you have administrator credendials in /root/.my.cnf and that your database lives in default /var/lib/mysql directory.

You can also purge binary logs after running this script to regain more disk space with:

PURGE BINARY LOGS BEFORE CURRENT_TIMESTAMP;

Adding to John P's answer,

For a linux system, steps 1-6 can be accomplished with these commands:

  1. mysqldump -u [username] -p[root_password] [database_name] > dumpfilename.sql
  2. DROP DATABASE [database_name];
  3. sudo /etc/init.d/mysqld stop
  4. sudo rm /var/lib/mysql/ibdata1
    sudo rm /var/lib/mysql/ib_logfile (and delete any other ib_logfile's that may be named ib_logfile0, ib_logfile1 etc...)
  5. sudo /etc/init.d/mysqld start
  6. create database [database_name];
  7. mysql -u [username]-p[root_password] [database_name] < dumpfilename.sql

Warning: these instructions will cause you to lose other databases if you have other databases on this mysql instance. Make sure that steps 1,2 and 6,7 are modified to cover all databases you wish to keep.

csdnceshi73
喵-见缝插针 Now this causes the error InnoDB: File ./ibdata1: 'open' returned OS error 71. Cannot continue operation, so cannot restart the server!
大约一年之前 回复
weixin_41568208
北城已荒凉 Triggers, events and routines/functions are not dumped unless you tell mysqldump to do so. Add the --triggers, --events and --routines as well if any of your databases contain them. Also, just dump with --all-databases to dump all databases at once instead of one by one.
一年多之前 回复
csdnceshi62
csdnceshi62 To type the password at a Password: prompt (which is a safer practice), just put -p without any actual password.
大约 2 年之前 回复
csdnceshi53
Lotus@ I didn't need to grant privileges when doing this. Possibly because I recreated the database with the same name?
接近 4 年之前 回复
csdnceshi54
hurriedly% You need a couple more steps in between #5 and #6. You have to recreate the database and re-assign permissions. So from mysql client command promptcreate database database_name; and then grant all privileges on database_name.* to 'username'@'localhost' identified by 'password';
大约 5 年之前 回复
weixin_41568126
乱世@小熊 You need to repeat 1,2, and 6 for every database that has InnoDB tables.
大约 5 年之前 回复

If your goal is to monitor MySQL free space and you can't stop MySQL to shrink your ibdata file, then get it through table status commands. Example:

MySQL > 5.1.24:

mysqlshow --status myInnodbDatabase myTable | awk '{print $20}'

MySQL < 5.1.24:

mysqlshow --status myInnodbDatabase myTable | awk '{print $35}'

Then compare this value to your ibdata file:

du -b ibdata1

Source: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

When you delete innodb tables, MySQL does not free the space inside the ibdata file, that's why it keeps growing. These files hardly ever shrink.

How to shrink an existing ibdata file:

http://dev.mysql.com/doc/refman/5.5/en/innodb-resize-system-tablespace.html

You can script this and schedule the script to run after a fixed period of time, but for the setup described above it seems that multiple tablespaces are an easier solution.

If you use the configuration option innodb_file_per_table, you create multiple tablespaces. That is, MySQL creates separate files for each table instead of one shared file. These separate files a stored in the directory of the database, and they are deleted when you delete this database. This should remove the need to shrink/purge ibdata files in your case.

More information about multiple tablespaces:

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

If you use the InnoDB storage engine for (some of) your MySQL tables, you’ve probably already came across a problem with its default configuration. As you may have noticed in your MySQL’s data directory (in Debian/Ubuntu – /var/lib/mysql) lies a file called ‘ibdata1′. It holds almost all the InnoDB data (it’s not a transaction log) of the MySQL instance and could get quite big. By default this file has a initial size of 10Mb and it automatically extends. Unfortunately, by design InnoDB data files cannot be shrinked. That’s why DELETEs, TRUNCATEs, DROPs, etc. will not reclaim the space used by the file.

I think you can find good explanation and solution there :

http://vdachev.net/2007/02/22/mysql-reducing-ibdata1/

In a new version of mysql-server recipes above will crush "mysql" database. In old version it works. In new some tables switches to table type INNODB, and by doing so you will damage them. The easiest way is to dump all you databases, uninstall mysql-server, add in remained my.cnf:

[mysqld]
innodb_file_per_table=1


erase all in /var/lib/mysql
install mysql-server
restore users and databases

As already noted you can't shrink ibdata1 (to do so you need to dump and rebuild), but there's also often no real need to.

Using autoextend (probably the most common size setting) ibdata1 preallocates storage, growing each time it is nearly full. That makes writes faster as space is already allocated.

When you delete data it doesn't shrink but the space inside the file is marked as unused. Now when you insert new data it'll reuse empty space in the file before growing the file any further.

So it'll only continue to grow if you're actually needing that data. Unless you actually need the space for another application there's probably no reason to shrink it.

csdnceshi71
Memor.の Complete nonsense! A file that keeps bloating up needs to be trimmed whether you're running out of space or not. I would call it a storage leak.
大约 2 年之前 回复
csdnceshi75
衫裤跑路 I have a 500G ibdata1 file - but almost all of the data that was stored in it is now stored in per-database files. I very much need to shrink this collossal waste of space!
2 年多之前 回复
csdnceshi67
bug^君 Thank you for this answer, it's very helpful. I have cleared out some tables from legacy data... it's good to know that the size on disk won't grow again any time soon.
4 年多之前 回复
weixin_41568127
?yb? I have a 60Gig Solid State partition. I run out of space fast, since I work with 4+gig databases. I'm looking to move mysql to another partition soon, but this question and it's answers will help me in the meantime
6 年多之前 回复
csdnceshi60
℡Wang Yan I think you're a little too dismissive of the need to free up the space.
接近 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql ibdata1文件太大,沾满磁盘空间,再有数据往里写的时候怎么处理。?菜鸟求解决!
-
MySQL数据库被删除了,只剩ibdata1三个文件,对应的表下的frm也存在,该如何恢复
-
求助一个关于mysql复制的问题
-
ubuntu14.04.1启动mysql出错
-
【mysql不能登陆root】
-
centos虚拟机重启后,MySQL服务启动不了了,求解?
-
WAMP无法启动Mysql,日志文件报错如下,求解决方案
-
mysql5.7启动报错,配置文件修改后又恢复为最初的配置,启动报错,
-
mysql经常挂掉,重启主机就好了
-
mysql非安装版无法启动 报1067错误
-
mysql宕机求高手指教原因
-
MYSQL 在做查询表信息的时候数据库重启!!比较急,在线
-
MYSQL下的幽灵表`````怎么能把它找出来`~~
-
mysql 访问量过大,造成链接不上的情况
-
wampserver mysql启动不了,日志中内容如下,有遇到的吗?全网帖子都搞了一遍没用
-
mysql服务启动报错1607 求助大神!
-
谁能帮忙解决一下,最近mysql老是自己就挂了,郁闷
-
虚拟机centos7上装MySQL5.7.18出现的问题
-
求大神帮我分析分析mysql的错误日志
-
学会了这些技术,你离BAT大厂不远了
每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术资料?没关系,平头哥一站式服务,上面统统不是问题。平头哥整理了 BAT 等一线大厂的必备技能,并且帮你准备了对应的资料。对于整理出来的技术,如果你掌握的不牢固,那就赶快巩固,如果你还没有涉及,现在...
程序员真是太太太太太有趣了!!!
网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发...
史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)
网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依旧在使用eclipse或者Myeclipse开发,我想对这些朋友说IDEA 的编译速度很快,人生苦短,来不及解释了,直接上手idea吧。这篇文章每一步搭建过程都测试过了,应该不会有什么差错。本文章还有个比较优秀的特点,就是idea的使用,基本上关于idea的操作都算是比较详细的,所以不用太担心不会撸idea!最后,本文
浏览 GitHub 太卡了?教你两招!
老实说,GitHub 在国内的使用体验并不算太好,这其中最大的原因就是网络了。 GitHub 访问起来比较卡,这个看起来貌似无解。国内的 gitee 网速倒是可以,但是无法代替 GitHub,个人感觉 gitee 上还是开源项目多一些,工具类库要少一些。 在网络比较卡的情况下,如果我们想在线查看 GitHub 上项目的源码,是非常的不方便,我们需要不断的进入到某个目录中,然后再退出来,再进入到其他...
吃人的那些 Java 名词:对象、引用、堆、栈
作为一个有着 8 年 Java 编程经验的 IT 老兵,说起来很惭愧,我被 Java 当中的四五个名词一直困扰着:**对象、引用、堆、栈、堆栈**(栈可同堆栈,因此是四个名词,也是五个名词)。每次我看到这几个名词,都隐隐约约觉得自己在被一只无形的大口慢慢地吞噬,只剩下满地的衣服碎屑(为什么不是骨头,因为骨头也好吃)。
Google 为中国开发者都带来了什么?
Android 10 原生支持 5G,Flutter 1.9、Dart 2.5 正式发布! 作者 | 唐小引写于上海世博中心 封图 | CSDN 付费下载自东方 IC 出品 | GDD 合作伙伴 CSDN(ID:CSDNnews) 这是 Google Developer Days 在中国的第四年,从 2016 年 Google Developers 中国网站正式发布,2017 年前 Goog...
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
接班马云的为何是张勇?
上海人、职业经理人、CFO 背景,集齐马云三大不喜欢的张勇怎么就成了阿里接班人? 作者|王琳 本文经授权转载自燃财经(ID:rancaijing) 9月10日,张勇转正了,他由阿里巴巴董事局候任主席正式成为阿里巴巴董事局主席,这也意味着阿里巴巴将正式开启“逍遥子时代”。 从2015年接任CEO开始,张勇已经将阿里巴巴股价拉升了超过200%。但和马云强大的个人光环比,张勇显得尤其...
让程序员崩溃的瞬间(非程序员勿入)
今天给大家带来点快乐,程序员才能看懂。 来源:https://zhuanlan.zhihu.com/p/47066521 1. 公司实习生找 Bug 2.在调试时,将断点设置在错误的位置 3.当我有一个很棒的调试想法时 4.偶然间看到自己多年前写的代码 5.当我第一次启动我的单元测试时 ...
Spring高级技术梳理
Spring高级技术梳理 序言正文SpringDate部分Spring全家桶之SpringData——预科阶段Spring全家桶之SpringData——Spring 整合Hibernate与Hibernate JpaSpring全家桶之SpringData——Spring Data JPASpring全家桶之SpringData——SpringData RedisSpringBoot部分Sp...
如何在Windows中开启"上帝模式"
原文链接 : https://mp.weixin.qq.com/s?__biz=MzIwMjE1MjMyMw==&amp;mid=2650202982&amp;idx=1&amp;sn=2c6c609ce06db1cee81abf2ba797be1b&amp;chksm=8ee1438ab996ca9c2d0cd0f76426e92faa835beef20ae21b537c0867ec2773be...
Docker 零基础从入门到使用
诺!这只可爱的小鲸鱼就是docker了! Docker 是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上( 摘自百度 )。 Docker 能干什么? 在讲 Docker 能干什么之前,我们不妨先看看没有 Docker 和有Docker分别是个什么样子的? 场景一 某公司需要开发...
分享靠写代码赚钱的一些门路
作者 mezod,译者 josephchang10如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。今天给大家分享一个精彩...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
技术人员要拿百万年薪,必须要经历这9个段位
很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职...
多线程编程是后台开发人员的基本功
这里先给大家分享一个小故事:在我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(IM,类似于 QQ 聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁...
win10电脑工具整理 - 常用工具!
如题,本文主要为博主对电脑上安装的一些软件,所做的整理,当做备份用吧。 一、分类 系统工具 办公软件 编程开发 数据库相关 图片视频工具 网络及下载工具 解压缩工具 影音娱乐工具 二、软件工具 1.系统工具 1.1. 磁盘管理 PartAssist:一款好用的磁盘分区管理工具。 1.2. 修复、引导 EasyBCD:一款常用的系统引导和修复工具。 1.3. 虚拟机管理工具 win10...
动画:用动画给面试官解释 TCP 三次握手过程
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。 对于这部分掌握以及 TCP 的四次挥手,小鹿将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。 学习导图 一、TCP 是什么? TCP(Transmissio...
为什么程序员在学习编程的时候什么都记不住?
在程序员的职业生涯中,记住所有你接触过的代码是一件不可能的事情!那么我们该如何解决这一问题?作者 |Dylan Mestyanek译者 | 弯月,责编 | 屠敏出品 |...
JAVA实现商品信息管理系统
任务与实现 超市商品管理系统 题目要求 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 主要完成对商品的销售、统计和简单管理。 这个题目相对简单,可以用一张表实现信息的保存和处理,因此不再给出数据库设计参考。 功能要求 (1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买...
500行代码,教你用python写个微信飞机大战
这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔,是…… 在一阵抽搐后,我结束了游戏,瞬时觉得一切都索然无味,正在我进入贤者模式时,突然想到,如果我可以让更多人已不同的方式体会到这种美轮美奂的感觉岂不美哉? 所以我打开电脑,创建了一个 `plan_game.py`……
相关热词 c# 增加元素 c#控制台简单加法 c# 服务端框架 c# 判断事件是否注册 c#中is和has c# udp 连接超时 c#词典 c#实现排列组合 c# oss 上传 c#判断输入的是否为ip