月度归档: 2024 年 6 月

  • MySQL删除表数据、清空表命令(truncate、drop、delete 区别)

    一、MySQL清空表数据三种方法

    1.1 清空表数据:truncate

    • sql命令

    代码语言:sql

    复制

    #清空多张表、库中所有表的数据
    truncate table table_name1,table_name2,...;
    
    #清空单张表的数据
    truncate table table_name;
    • 注意:
    • truncate会删除表中的所有数据、释放空间,但是保留表结构
    • 只能操作表,不能与where一起使用
    • truncate删除操作立即生效,原数据不放到rollback segment中,不能rollback,操作不触发trigger
    • truncate删除数据后会释放表空间、重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录、而非接着原来的id数
    • truncate删除数据后不写服务器log,整体删除速度快

    1.2 删除表:drop

    • sql命令

    代码语言:sql

    复制

    drop table table_name;
    drop table if exists table_name;
    • 注意:
      • drop会删除整个表,包括表结构和数据,释放空间
      • 立即执行,执行速度最快
      • 不可回滚

    1.3 删除/清空表数据:delete

    • sql命令

    代码语言:sql

    复制

    #删除部分数据
    delete from tb_name where clause;
    
    #清空表,仅删除数据、保留表结构,同时也不释放表空间
    delete from tb_name;
    • 注意:
      • 删除表中数据而不删除表结构,也不释放空间
      • delete可以删除一行、多行、乃至整张表
      • 每次删除一行,都在事务日志中为所删除的每行记录一项,可回滚
      • 如果不加where条件,表示删除表中所有数据,仅删除数据、保留表结构,同时也不释放表空间

    MySQL、Mariadb、PostgreSQL删除表数据、清空表命令 都可用以上三种命令。

    二、使用原则

    使用原则总结如下:

    • 当你不需要该表时(删除数据和结构),用drop;
    • 当你仍要保留该表、仅删除所有数据表内容时,用truncate;
    • 当你要删除部分记录、且希望能回滚的话,用delete;

    在没有备份的情况下,谨慎使用drop、truncate。

    在实际应用中,要根据具体需求和场景选择合适的操作。

    三、truncate、drop、delete区别

    truncate、delete和drop都是用于删除数据或表的操作,但它们之间有一些关键的区别:

    1. 操作类型:
      • truncate:删除表中的所有数据,保留表结构,释放空间。它是一种DDL(数据定义语言)操作,执行速度较快。
      • delete:删除表中的特定行,可以逐行删除,保留表结构,也不释放空间。它是一种DML(数据操作语言)操作,执行速度较慢。
      • drop:删除整个表,包括表结构和数据,释放空间。它是一种DDL操作,但不同于truncate,它会释放表所占用的空间。
    2. 数据删除方式:
      • truncate:删除表中的所有数据,但不会删除表结构。适用于需要保留表结构的情况。
      • delete:删除表中的特定数据,可以根据条件删除,表的结构和约束保持不变。适用于需要根据特定条件删除数据的情况。
      • drop:删除整个表,包括表结构和数据。适用于不再需要表结构的情况。
    3. 执行速度:drop > truncate > delete
      • truncate:执行速度较快,因为它一次性删除所有数据,过释放表的存储空间来删除数据,并将表重置为初始状态。
      • delete:执行速度较慢,因为它需要逐行删除数据,并且会生成大量的事务日志,同时也不释放空间。
      • drop:执行速度较快,因为它一次性删除整个表。
    4. 回滚能力:
      • truncate:不可回滚,一旦执行,数据将被永久删除、无法恢复。
      • delete:可以回滚,使用ROLLBACK语句可以撤销删除操作。
      • drop:不可回滚,一旦执行,表结构和数据都将被永久删除。
    5. 触发器:
      • truncate:不会触发触发器。
      • delete:会触发触发器。
      • drop:不会触发触发器,因为它是删除整个表。

    总结:

    • 如果您需要快速删除整个表中的数据,但保留表结构,可以选择truncate。
    • 如果您需要删除特定行的数据,可以根据条件删除,可以选择delete。
    • 如果您需要删除整个表,包括表结构和数据,可以选择drop。 在实际应用中,要根据具体需求和场景选择合适的操作。
  • Rclone 使用教程

    Rclone是一个命令行程序,用于管理云存储上的文件。他打包了各大供应商云存储的接口提供统一的访问界面。rclone支持40多种云存储产品,包括对象存储、企业和消费者文件存储、服务以及标准传输协议。Rclone符合unix POSIX规范,支持于常见的shell工具,比如rsync、cp、 mv、mount、ls、ncdu、tree、rm 和cat等交互,Rclone使用我们耳闻能熟的语法,支持shell管道,支持—dry-run保护,同时为了保护数据的可靠性,Rclone可保留时间戳和始终进行文件验证校验和。Rclone多种文件传输协议,支持SFTP,HTTP,WebDAV,FTP和DLNA。Rclone是一个成熟的开源软件,最初受rsync的启发并采用Golang编写。其文档和社区也都非常好,提供广泛和友好的使用用例。

    设置

    命令 说明
    rclone config 添加、删除、管理网盘等操作
    rclone config file 显示配置文件的路径
    rclone config show 显示配置文件信息
    root@SunPma:~# rclone config
    Current remotes:
    
    Name                 Type
    ====                 ====
    DB                 dropbox
    GD                 drive
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q>

    语法

    # 本地到网盘
    rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数]
    
    # 网盘到本地
    rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数]
    
    # 网盘到网盘
    rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数]
    
    # [参数]为可选项

    示例

    # 复制到网盘,并显示实时传输进度,设置并行上传数为8
    
    rclone copy -P /home/SunPma GD:/home/SunPma --transfers=8
    
    # 如果需要服务端对服务端的传输可加以下参数(不消耗本地流量)
    
    rclone copy 配置名称:网盘路径 配置名称:网盘路径 --drive-server-side-across-configs

    功能

    命令 说明
    rclone copy 复制
    rclone move 移动,如果要在移动后删除空源目录,加上 –delete-empty-src-dirs 参数
    rclone sync 同步:将源目录同步到目标目录,只更改目标目录
    rclone size 查看网盘文件占用大小
    rclone delete 删除路径下的文件内容
    rclone purge 删除路径及其所有文件内容
    rclone mkdir 创建目录
    rclone rmdir 删除目录
    rclone rmdirs 删除指定环境下的空目录。如果加上 –leave-root 参数,则不会删除根目录
    rclone check 检查源和目的地址数据是否匹配
    rclone ls 列出指定路径下的所有的文件以及文件大小和路径
    rclone lsl 比上面多一个显示上传时间
    rclone lsd 列出指定路径下的目录
    rclone lsf 列出指定路径下的目录和文件

    参数

    命令 说明
    -n = –dry-run 测试运行,查看Rclon在实际运行中会进行哪些操作
    -P = –progress 显示实时传输进度,500mS刷新一次,否则默认1分钟刷新一次
    –cache-chunk-size 5M 块的大小,默认5M越大上传越快,占用内存越多,太大可能会导致进程中断
    –onedrive-chunk-size 100M 提高OneDrive上传速度适用于G口宽带服务器(默认为320KB)
    –drive-chunk-size 64M 提高Google Drive上传速度适用于G口宽带服务器(默认为8M)
    –cache-chunk-total-size SizeSuffix 块可以在本地磁盘上占用的总大小,默认10G
    –transfers=N 并行文件数,默认为4
    –config string 指定配置文件路径,string为配置文件路径
    –ignore-errors 跳过错误
    –size-only 根据文件大小校验,不校验hash
    –drive-server-side-across-configs 服务端对服务端传输

    日志

    有4个级别的日志记录:ERROR NOTICE INFO DEBUG
    默认情况下Rclon将生成ERROR NOTICE日志

    命令 说明
    -q rclone将仅生成ERROR消息
    -v rclone将生成ERROR NOTICE INFO 消息
    -vv rclone 将生成ERROR NOTICE INFO DEBUG 消息
    –log-level LEVEL 标志控制日志级别

    输出日志到文件
    使用--log-file=FILE选项rclone会将Error Info Debug消息以及标准错误重定向到FILE
    这里的FILE是你指定的日志文件路径

    过滤

    命令 说明
    –exclude 排除文件或目录
    –include 包含文件或目录
    –filter 文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头

    文件类型过滤
    例如--exclude "*.bak" --filter "- *.bak"排除所有bak文件
    例如--include "*.{png,jpg}" --filter "+ *.{png,jpg}"包含所有pngjpg文件,排除其他文件
    例如--delete-excluded删除排除的文件。需配合过滤参数使用,否则无效
    目录过滤
    目录过滤需要在目录名称后面加上/否则会被当做文件进行匹配
    /开头只会匹配根目录(指定目录下),否则匹配所目录,这同样适用于文件
    --exclude ".git/"排除所有目录下的.git目录
    --exclude "/.git/"只排除根目录下的.git目录
    --exclude "{Video,Software}/"排除所有目录下的VideoSoftware目录
    --exclude "/{Video,Software}/"只排除根目录下的VideoSoftware目录
    --include "/{Video,Software}/**"仅包含根目录下的VideoSoftware目录的所有内容
    大小过滤
    默认大小单位为kBytes但可以使用k MG后缀
    --min-size过滤小于指定大小的文件。比如--min-size 50表示不会传输小于50k的文件。
    --max-size过滤大于指定大小的文件。比如--max-size 1G表示不会传输大于1G的文件。
    实际使用中发现大小过滤两个选项不能同时使用
    过滤规则文件
    --filter-from <规则文件>从文件添加包含/排除规则
    比如--filter-from filter-file.txt
    过滤规则文件示例:

    - secret*.jpg
    + *.jpg
    + *.png
    + file2.avi
    - /dir/Trash/**
    + /dir/**
    - *

    环境变量

    rclone中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除--前缀,更改-_大写并添加前缀RCLONE_环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。
    比如设置最小上传大小--min-size 50使用环境变量是RCLONE_MIN_SIZE=50当环境变量设置后,在命令行中使用--min-size 100那么此时环境变量的值就会被覆盖
    常用环境变量

    命令 说明
    RCLONE_CONFIG 自定义配置文件路径
    RCLONE_CONFIG_PASS 若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件
    RCLONE_RETRIES 上传失败重试次数,默认 3 次
    RCLONE_RETRIES_SLEEP 上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时
    CLONE_TRANSFERS 并行上传文件数
    RCLONE_CACHE_CHUNK_SIZE 块的大小,默认5M
    RCLONE_CACHE_CHUNK_TOTAL_SIZE 块可以在本地磁盘上占用的总大小,默认10G
    RCLONE_IGNORE_ERRORS=true 跳过错误

     #rclone

  • Linux程序前台后台切换

    1、在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行

    root@Ubuntu$ ./tcpserv01 &

    2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行,摁Ctrl+z,然后在最后一行加上bg %number

    3、对于所有运行的程序,我们可以用jobs –l 指令查看

    [kettle@4 data-integration]$ jobs -l

    4、也可以用 fg %[number] 指令把一个程序掉到前台

    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ fg %1
    ./tcpserv01

    5、也可以直接终止后台运行的程序,使用 kill 命令

    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ kill %1

    二、fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

    一、&
    加在一个命令的最后,可以把这个命令放到后台执行,如
    watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本

    二、ctrl + z
    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。


    三、jobs
    查看当前有多少在后台运行的命令
    jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。


    四、fg
    将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。


    五、bg
    将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。


    六、kill
    法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
    法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
    前台进程的终止:Ctrl+c


    七、nohup
    如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

    ps -aux | grep “test.sh” #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分

    八、查看nohup.out的日志

    linux 下:

    tail -fn 50 nohup.out