【MySQL】单表支持并行导出的工具–mydumper
下载和安装:

https://github.com/maxbube/mydumper

RHEL6.5源码安装mydumper 0.9.5:

yum install -y cmake*
yum install -y glib2-devel zlib-devel pcre-devel openssl-devel
yum install -y mysql mysql-devel mysql-libs
unzip mydumper-0.9.5.zip
cd mydumper-0.9.5
cmake .
make
make install
注意:

  1、若安装不成功,多半是因为依赖包的原因,其中mysql-devel、mysql-libs包是必须安装的,或者也可以设置:

vi /etc/profile
export PS1="[\u@\h \W]$ "
export MYSQL_HOME=/usr/local/mysql57/mysql5719
export PATH=PATH:PATH:PATH:MYSQL_HOME/bin
export CLASSPATH=CLASSPATH:CLASSPATH:CLASSPATH:MYSQL_HOME/lib
source /etc/profile
2 、请使用网络yum源更新相关的依赖包,对于RHEL6.5,应该使用网络YUM更新相关的依赖包

—配置rhel6.5网络yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
sed -i ‘s/$releasever/6/g’ /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum list
yum install ca-certificates

安装过程中的异常

错误1:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

Please set them or make sure they are set and tested correctly in the CMake files:

PCRE_INCLUDE_DIR (ADVANCED)

used as include directory in directory /root/mydumper-0.6.2

PCRE_PCRE_LIBRARY (ADVANCED)

linked by target "mydumper" in directory /root/mydumper-0.6.2linked by target "myloader" in directory /root/mydumper-0.6.2

###需要安装pcre-devel包,yum install pcre-devel

错误2:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

Please set them or make sure they are set and tested correctly in the CMake files:

MYSQL_INCLUDE_DIR (ADVANCED)

used as include directory in directory /home/robin/mydumper-0.6.2

used as include directory in directory /home/robin/mydumper-0.6.2

used as include directory in directory /home/robin/mydumper-0.6.2

###出现上述错误,是由于没有配置MYSQL_INCLUDE_DIR目录。

###如果是编译安装到非缺省路径,可以将mysql安装路径添加到/etc/profile或者家目录~/.bash_profile后source生效

错误3:

[root@GZ-APP-BAK01 ~]# mydumper --help|more

mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

[root@GZ-APP-BAK01 ~]# mydumper

mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

###出现上述错误,应考虑建立软链

which libmysqlclient.so.18

/app/soft/mysql/lib/libmysqlclient.so.18

ln -s /app/soft/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

错误4:

mydumper -uusr1 -ppwd -B blos -o /tmp/bak

option parsing failed: Error parsing option -r, try --help

###参数和字符串不能连着写,笔者刚开始是也是丈二和尚摸不着头脑。

mydumper --version

mydumper 0.6.2, built against MySQL 5.6.22

相比mysqldump,其优势如下:

1 速度快(好多资料都说快10倍,个人持保留意见);

2 支持多线程导出和导入myloader;

3 采用守护进程方式运行,可定时扫描和快照binlog(-snapshot-interval);

4 快速文件压缩;

一般做mysql逻辑备份用mysqldump比较多,但是有一款叫mydumper的工具速度上会mysqldump快很多,具体优点为:

支持多线程备份

支持文件压缩

支持多线程恢复

保证数据的一致性

比mysqldump备份速度和恢复速度都要快。

特性如下:

Parallelism (hence, speed) and performance (avoids expensive character set conversion routines, efficient code overall)

Easier to manage output (separate files for tables, dump metadata, etc, easy to view/parse data)

Consistency - maintains snapshot across all threads, provides accurate master and slave log positions, etc

Manageability - supports PCRE for specifying database and tables inclusions and exclusions

并行导出(默认4个)、易于管理(表数据和元数据分开导出管理)、一致性、可指定或者排除某些数据库或者表的操作

也有稍许不足之处,如mydumper不处理MySQL的视图,触发器和存储过程,因此使用mydumper去导出schema并不可靠。

实际生产环境中,建议mydumper仅用于导出数据(使用 --no-schemas ),而通过mysqldump来导出schema。

mydumper除了为每个表会分别生成table.sql和table-schema.sql,还会生成一个.metadata文件,记录dump的开始和结束时间,以及binlog位置信息。

安装:

[root@iZ252affh58Z ~]# tar -zxvf mydumper-0.9.1.tar.gz
mydumper-0.9.1/CMakeLists.txt
mydumper-0.9.1/README
mydumper-0.9.1/binlog.c
mydumper-0.9.1/binlog.h
mydumper-0.9.1/cmake/
mydumper-0.9.1/common.h
mydumper-0.9.1/config.h. in
mydumper-0.9.1/docs/
mydumper-0.9.1/g_unix_signal.c
mydumper-0.9.1/g_unix_signal.h
mydumper-0.9.1/mydumper.c
mydumper-0.9.1/mydumper.h
mydumper-0.9.1/myloader.c
mydumper-0.9.1/myloader.h
mydumper-0.9.1/server_detect.c
mydumper-0.9.1/server_detect.h
mydumper-0.9.1/cmake/modules/
mydumper-0.9.1/cmake/modules/CppcheckTargets.cmake
mydumper-0.9.1/cmake/modules/FindGLIB2.cmake
mydumper-0.9.1/cmake/modules/FindMySQL.cmake
mydumper-0.9.1/cmake/modules/FindPCRE.cmake
mydumper-0.9.1/cmake/modules/FindSphinx.cmake
mydumper-0.9.1/cmake/modules/Findcppcheck.cmake
mydumper-0.9.1/cmake/modules/Findcppcheck.cpp
mydumper-0.9.1/docs/CMakeLists.txt
mydumper-0.9.1/docs/_build/
mydumper-0.9.1/docs/_static/
mydumper-0.9.1/docs/authors.rst
mydumper-0.9.1/docs/compiling.rst
mydumper-0.9.1/docs/examples.rst
mydumper-0.9.1/docs/files.rst
mydumper-0.9.1/docs/ index .rst
mydumper-0.9.1/docs/mydumper_usage.rst
mydumper-0.9.1/docs/myloader_usage.rst
mydumper-0.9.1/docs/_build/conf.py. in
mydumper-0.9.1/docs/_build/sources.cmake. in
[root@iZ252affh58Z ~]# cd mydumper-0.9.1
[root@iZ252affh58Z mydumper-0.9.1]# cmake .
– The C compiler identification is GNU 4.4.7
– The CXX compiler identification is GNU 4.4.7
– Check for working C compiler: /usr/bin/cc
– Check for working C compiler: /usr/bin/cc – works
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Check for working CXX compiler: /usr/bin/c++
– Check for working CXX compiler: /usr/bin/c++ – works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Using mysql-config: /mnt/software/mysql/bin/mysql_config
– Found MySQL: /mnt/software/mysql/include, /mnt/software/mysql/lib/libmysqlclient.so;/usr/lib64/libpthread.so;/usr/lib64/libm.so;/usr/lib64/librt.so;/usr/lib64/libdl.so
– Found ZLIB: /usr/lib64/libz.so (found version “1.2.3”)
– Found PkgConfig: /usr/bin/pkg-config (found version “0.23”)
– checking for one of the modules ‘glib-2.0’
– checking for one of the modules ‘gthread-2.0’
– checking for module ‘libpcre’
– found libpcre, version 7.8
– Found PCRE: /usr/include
CMake Warning at docs/CMakeLists.txt:9 (message):
Unable to find Sphinx documentation generator


– MYSQL_CONFIG = /mnt/software/mysql/bin/mysql_config
– CMAKE_INSTALL_PREFIX = /usr/local
– BUILD_DOCS = ON
– WITH_BINLOG = OFF
– RUN_CPPCHECK = OFF
– Change a values with: cmake -D=



– Configuring done
– Generating done
– Build files have been written to: /root/mydumper-0.9.1
[root@iZ252affh58Z mydumper-0.9.1]# make
Scanning dependencies of target mydumper
[ 25%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o
[ 50%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o
[ 75%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o
Linking C executable mydumper
[ 75%] Built target mydumper
Scanning dependencies of target myloader
[100%] Building C object CMakeFiles/myloader.dir/myloader.c.o
Linking C executable myloader
[100%] Built target myloader
[root@iZ252affh58Z mydumper-0.9.1]# make install
[ 75%] Built target mydumper
[100%] Built target myloader
Install the project…
– Install configuration: “”
– Installing: /usr/local/bin/mydumper
– Removed runtime path from “/usr/local/bin/mydumper”
– Installing: /usr/local/bin/myloader
– Removed runtime path from “/usr/local/bin/myloader”
确认是否安装成功:缺少libmysqlclient.so.20

[root@iZ252affh58Z mydumper-0.9.1]# whereis mydumper
mydumper: /usr/ local /bin/mydumper
[root@iZ252affh58Z mydumper-0.9.1]#
[root@iZ252affh58Z mydumper-0.9.1]# ldd /usr/ local /bin/mydumper
linux-vdso.so.1 => (0x00007fffe131a000)
libmysqlclient.so.20 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003541e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003542600000)
librt.so.1 => /lib64/librt.so.1 (0x0000003542a00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003542200000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f1a283ad000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f1a281a9000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f1a27f7b000)
libz.so.1 => /lib64/libz.so.1 (0x0000003542e00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003541a00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003541600000)
解决办法:

[root@iZ252affh58Z mydumper-0.9.1]# locate libmysqlclient.so.20
/mnt/software/mysql/lib/libmysqlclient.so.20
/mnt/software/mysql/lib/libmysqlclient.so.20.2.1
[root@iZ252affh58Z mydumper-0.9.1]# cp /mnt/software/mysql/lib/libmysqlclient.so.20 /usr/lib64
[root@iZ252affh58Z mydumper-0.9.1]#
[root@iZ252affh58Z mydumper-0.9.1]# mydumper
** (mydumper:25013): CRITICAL **: Error connecting to database : Access denied for user ‘root’ @ ‘localhost’ (using password : NO )
查看版本号,已经安装成功了

[root@iZ252affh58Z mydumper-0.9.1]# mydumper -V
mydumper 0.9.1, built against MySQL 5.7.12
查看帮助:

[root@iZ252affh58Z mydumper-0.9.1]# mydumper --help
Usage:
mydumper [ OPTION …] multi-threaded MySQL dumping
Help Options:
-?, --help Show help options
Application Options:
-B, --database Database to dump
-T, --tables-list Comma delimited table list to dump (does not exclude regex option)
-o, --outputdir Directory to output files to
-s, --statement-size Attempted size of INSERT statement in bytes, default 1000000
-r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
-F, --chunk-filesize Split tables into chunks of this output file size. This value is in MB
-c, --compress Compress output files
-e, --build-empty-files Build dump files even if no data available from table
-x, --regex Regular expression for ‘db.table’ matching
-i, --ignore-engines Comma delimited list of storage engines to ignore
-m, --no-schemas Do not dump table schemas with the data
-d, --no-data Do not dump table data
-G, --triggers Dump triggers
-E, --events Dump events
-R, --routines Dump stored procedures and functions
-k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups
–less-locking Minimize locking time on InnoDB tables.
-l, --long-query-guard Set long query timer in seconds, default 60
-K, --kill-long-queries Kill long running queries (instead of aborting)
-D, --daemon Enable daemon mode
-I, --snapshot-interval Interval between each dump snapshot (in minutes), requires --daemon, default 60
-L, --logfile Log file name to use, by default stdout is used
–tz-utc SET TIME_ZONE=’+00:00’ at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
–skip-tz-utc
–use-savepoints Use savepoints to reduce metadata locking issues, needs SUPER privilege
–success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn’t exist
–lock-all-tables Use LOCK TABLE for all, instead of FTWRL
-U, --updated-since Use Update_time to dump only tables updated in the last U days
–trx-consistency-only Transactional consistency only
-h, --host The host to connect to
-u, --user Username with privileges to run the dump
-p, --password User password
-P, --port TCP/IP port to connect to
-S, --socket UNIX domain socket file to use for connection
-t, --threads Number of threads to use, default 4
-C, --compress-protocol Use compression on the MySQL connection
-V, --version Show the program version and exit
-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
备份全库:

mydumper -u root -p ‘xxxxxDB2015!@#’ -o /mnt/backup/
备份mysqlhqdb数据库:

mydumper -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -o /mnt/backup/
备份多张表(tableA,tableB):

mydumper -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -T tableA,tableB -o /mnt/backup/
备份tableA表的数据,不备份表结构

mydumper -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -T tableA -m -o /mnt/backup/
备份tableA表的数据,并进行压缩

mydumper -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -T tableA -c -o /mnt/backup/
还原mysqlhqdb库:

myloader -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -d /mnt/backup/
还原tableA表

myloader -u root -p ‘xxxxxDB2015!@#’ -B mysqlhqdb -o tableA -d /mnt/backup/
mysqldump和mydumper的速度对比

首先用mydumper进行全库备份,耗时为12分钟

[root@iZ252affh58Z mnt]# time mydumper -u root -p ‘xxxxxDB2015!@#’ -o /mnt/backup/
real12m19.526s
user3m29.925s
sys0m36.017s
再用mysqldump全库备份,耗时为18分钟

[root@iZ252affh58Z mnt]# time mysqldump -uroot -p ‘xxxxxDB2015!@#’ --single-transaction --all-databases > /mnt/backup/all.sql
– Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
real18m0.563s
user5m53.119s
sys0m48.295s
mydumper明显比mysqldump快很多。

参数

-long-query-guard:长查询上限(默认60s),如果当前数据库存在运行时间大于此参数的查询则退出mydumper;

-kill-long-queries:杀死查出的长查询;

-daemon:启用守护进程模式;

-snapshot-interval:快照时间间隔,默认60s;

-t, --threads 使用的线程数,默认4

-C, --compress-protocol 在mysql连接上使用压缩

-e, --enable-binlog 启用二进制恢复数据

-r, --rows 将表分成多个文件批次导出,

1 确定表的行数,依据pk – uk – cardinality最高的索引(show index from table)选择索引,通过explain select index from table的rows字段确定行数;

2 已经total_rows和rows将表分成若干分块,每个分块可由不同worker并行执行,适用于大表;

–备份 导出到文件中

-m, --no-schemas Do not dump table schemas with the data --仅导出数据 无元数据

-d, --no-data Do not dump table data --仅导出元数据 无数据

  --trx-consistency-only      Transactional consistency only       --事物一致 获取开始导出时的数据快照 innodb适用

-t, --threads Number of threads to use, default 4 --线程数,默认4个

–全量备份

[root@hostmysql-m mysqlbkp]# mydumper -u root -p RootXXXX --outputdir db_all_mydumper/

–查看导出的文件,元数据和表数据分开的文件

[root@hostmysql-m db_all_mydumper]# ll -h test_conver_table_2

-rw-r–r-- 1 root root 239 Dec 4 16:09 flydb.test_conver_table_2-schema.sql

-rw-r–r-- 1 root root 199M Dec 4 16:09 flydb.test_conver_table_2.sql

–按库备份 flydb

[root@hostmysql-m mysqlbkp]# mydumper -u root -p RootXXXX --database flydb --outputdir flydb_mydumper/

–按表备份 flydb.t_test_blob

[root@hostmysql-m mysqlbkp]# mydumper -u root -p RootXXXX --database flydb --tables-list test_conver_table_1 --rows=10000 --threads 8 --outputdir flydb_test_conver_table_1_mydumper/

–时间点 恢复测试

–在建立备份时,只记录开始备份时的状态,所以在开始备份后 所产生的操作不在备份中,需要利用二进制日志执行时间点的恢复操作

–恢复测试流程如下:

           备份单库flydb,备份后建立新表test_conver_table_bak, 删除库flydb, 从备份中恢复flydb,利用二进制日志恢复 备份后新建立表的操作

–按库备份 flydb

[root@hostmysql-m mysqlbkp]# mydumper -u root -p RootXXXX --database flydb --outputdir flydb_all_mydumper/

–备份后,建立test_conver_table_bak

mysql> create table test_conver_table_bak as select * from test_conver_table where 1=2;

Query OK, 0 rows affected (0.45 sec)

Records: 0 Duplicates: 0 Warnings: 0

–删除flydb 库

mysql> drop database flydb;

Query OK, 49 rows affected (3.93 sec)

–从备份文件中 恢复flydb库

[root@hostmysql-m mysqlbkp]# myloader --directory=flydb_all_mydumper/ -u root -p Root123$

–恢复完成后,查看备份后的新建表test_conver_table_bak并不存在

mysql> select * from test_conver_table_bak;

ERROR 1146 (42S02): Table ‘flydb.test_conver_table_bak’ doesn’t exist

–查看备份元数据文件的position,应用binlog 从备份后重做一遍所有操作

[root@hostmysql-m flydb_all_mydumper]# more metadata

Started dump at: 2018-12-05 10:02:27

SHOW MASTER STATUS:

    Log: mysql-bin.000102Pos: 473GTID:

Finished dump at: 2018-12-05 10:03:10

–查看mysql-bin.000102二进制日志,把473之后 到775 删除flydb之前的 都重做一遍

[root@hostmysql-m mysql]# mysqlbinlog -vv mysql-bin.000102

at 473

#181205 10:04:48 server id 1 end_log_pos 538 CRC32 0x4d14afc8 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no

SET @@SESSION.GTID_NEXT= ‘ANONYMOUS’/!/;

at 538

#181205 10:04:48 server id 1 end_log_pos 710 CRC32 0xcf3438f4 Query thread_id=4 exec_time=0 error_code=0

SET TIMESTAMP=1543975488/!/;

CREATE TABLE test_conver_table_bak (

a int(11) DEFAULT NULL,

b varchar(10) DEFAULT NULL

)

/!/;

at 710

#181205 10:08:27 server id 1 end_log_pos 775 CRC32 0x5db739dd Anonymous_GTID last_committed=2 sequence_number=3 rbr_only=no

SET @@SESSION.GTID_NEXT= ‘ANONYMOUS’/!/;

at 775

#181205 10:08:27 server id 1 end_log_pos 875 CRC32 0x10260fcb Query thread_id=4 exec_time=3 error_code=0

SET TIMESTAMP=1543975707/!/;

drop database flydb

/!/;

SET @@SESSION.GTID_NEXT= ‘AUTOMATIC’ /* added by mysqlbinlog / /!*/;

DELIMITER ;

End of log file

/!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE/;

/!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0/;

–具体的执行时间点恢复操作,应用二进制日志恢复

[root@hostmysql-m mysql]# mysqlbinlog /var/lib/mysql/mysql-bin.000102 --start-position=473 --stop-position=710 --disable-log-bin | mysql -uroot -pRootXXXX

–再次查看表恢复成功

mysql> select count(1) from test_conver_table_bak;

±---------+

| count(1) |

±---------+

| 0 |

±---------+

1 row in set (0.04 sec)

安装

1 安装cmake,apt-get install cmake;

2 安装兼容包,如apt-get install libglib2.0-dev libmysqlclient15-dev,具体参照官网;

3 下载安装包并编译

#wget http://launchpad.net/mydumper/0.2/0.2.3/+download/mydumper-0.2.3.tar.gz

#tar xzvf mydumper-0.2.3.tar.gz

#cd mydumper-0.2.3/

#cmake .

#make

#make install

原理

Mysqldump是个单线程工具,只能逐个导出表,而mydumper支持多线程并行导出;

尽管mydumper主线程已经登录进入了mysql,但worker子线程必须再登录一次,因为libmysql是线程不安全的?

工作流程

1 连接目标数据库;

2 通过show processlist来判断是否有长查询,如果有长查询则退出dump(通过-long-query-guard指定),或者使用-kill-long-queries杀掉长查询;

3 锁定myisam表,flush tables with read lock; 针对innodb table开启事务,start transaction;

4 创建worker子线程;

5 确定候选表,根据类别分别插入innodb_table,non_innodb_table以及table_schemas链表(表结构);

6 将候选表通过g_async_queue_push加入任务队列(队列最后元素是thread shutdown),由worker子线程从队列中读取表信息并执行数据导出

for(;

【MySQL】单表支持并行导出的工具--mydumper相关推荐

  1. 关于mysql单表支持的最大大小

    mysql单表支持的最大存储空间大小为多少呢? 其实这个问题要拆分成两个问题. 第一是操作系统所采用的文件系统能支持的单个文件大小,比如: linux 2.2-intel 32-bit (ext2文件 ...

  2. mysql单表1000万条_mysql单表千万条数据测试

    软件环境:win7,mysql版本5.5,InnoDB存储引擎. 硬件环境:普通笔记本,CPU P8700双核2.53GHz,内存3G,5400转机械硬盘1000GB. 建了一张表,id列是自增长bi ...

  3. MySQL单表膨胀优化之MyCat分库分表

    MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...

  4. mysql单表存放上亿数据,查询依旧很快。

    引子 hello,各位小伙伴,大家好,这篇是mysql的第三篇了,还没看过前两篇的小伙伴可以去看看,对理解这一篇有很大的帮助哦. 废话不多说,我们直接开始正文,作为一名java后端开发工程师,我们都知 ...

  5. MySQL单表数据量过千万,采坑优化记录,完美解决方案

    MySQL单表数据量过千万,采坑优化记录,完美解决方案 参考文章: (1)MySQL单表数据量过千万,采坑优化记录,完美解决方案 (2)https://www.cnblogs.com/ExMan/p/ ...

  6. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

  7. mysql单表备份语句

    mysql单表备份语句 mysql单表备份 SELECT CONCAT("mysqldump -uroot -p123456 ",table_schema," " ...

  8. mysql单表备份语句 +多表

    mysql单表备份语句 mysql单表备份 SELECT CONCAT("mysqldump -uroot -p123456 ",table_schema," " ...

  9. 数据库性能优化—MySQL单表最大记录数超过多少时性能会严重下降

    以前没有想过MySQL数据库的单表最大行数,直到最近interview时被问到c语言中int类型的最大值是多少时才想到Mysql单表最大行数的问题. 一开始被问到C语言中int类型的最大值有点懵逼,一 ...

最新文章

  1. Java可以跨平台的原因
  2. 成为最大的独立开源公司,对SUSE意味着什么? | 人物志
  3. 格式化字符串长度 超出指定长度用....代替
  4. 坐等价格!小米Civi今日下午发布:女性用户青睐之选
  5. 聊聊Socket、TCP/IP、HTTP、FTP及网络编程
  6. TFS首次安装与配置,极其注意事项个人备用
  7. 【论文写作】Springboot人才招聘网站如何画系统流程图
  8. DB and RAC(11.2.0.3 ) Patch Set Update(11.2.0.3.6 )
  9. 软件测评师之2021软件测评师新大纲《软件评测师教程(第2版)》(四)
  10. CAD关于线型操作添加线型(com接口c#语言)
  11. FreeImage的学习总结总结(一)
  12. c语言计算音频分贝函数,如果用c语言程序读取一段音频文件要如何做,具体要调用哪些函数,在网上搜索了半天,乱七八糟的,找不到什么有用的信息...
  13. 打印服务器后台程序没有运行,win10遇到“打印后台程序服务没有运行”的解决方法...
  14. 当浏览器默认禁用第三方cookie
  15. 2023齐齐哈尔大学计算机考研信息汇总
  16. 使用stream报错:stream has already been operated upon or closed
  17. 双月数据生成及其常见算法(二)
  18. html ul在div里居中,在DIV内水平居中UL
  19. 小米3c虚拟服务器,小米路由器3和3C哪个好?小米路由器3和3C区别
  20. 6.计算机系统能力创新实践,计算机考核要重实践能力、培养创新精神

热门文章

  1. 杀掉会重新开启rails s的进程
  2. 发货100个人虚拟商品自动发货系统PHP源码
  3. Linux sed编辑器(精讲)
  4. Firefox OS 2.0 全新用户界面设计曝光
  5. 游客模式android,Android之游客登录模式
  6. oracle 11g ora31626,expdp时候出错:ORA-31626,ORA-31637,ORA-39062,ORA-31613
  7. echarts setoption 不生效
  8. 6-6 实验6_9_素数分解 (100分)
  9. arch下aria2c守护进程等配置小结
  10. 锥透镜生成贝塞尔光束ZEMAX光学设计