首页 文章 精选 留言 我的

精选列表

搜索[数据库脚本],共10028篇文章
优秀的个人博客,低调大师

MySQL数据库中FOR UPDATE的使用

在MySQL中,FOR UPDATE是一个非常重要的锁机制,主要用于在事务中锁定查询到的数据行,防止其他事务修改这些数据。 基本语法 sql 复制代码 SELECT * FROM table_name WHERE condition FOR UPDATE; 主要作用 1. 行级排他锁 对查询结果集加排他锁(X锁) 其他事务无法对这些行加任何锁,包括读锁和写锁 其他事务可以普通读取(取决于隔离级别),但不能修改 2. 防止数据竞争 在并发环境下,防止多个事务同时修改同一数据: sql 复制代码 -- 事务1 START TRANSACTION; SELECT balance FROM accounts WHERE id = 1 FOR UPDATE; -- 此时其他事务无法修改id=1的记录 UPDATE accounts SET balance = balance - 100 WHERE id = 1; COMMIT; 使用场景 1. 库存扣减 sql 复制代码 START TRANSACTION; SELECT stock FROM products WHERE id = 1001 FOR UPDATE; -- 检查库存并扣减 UPDATE products SET stock = stock - 1 WHERE id = 1001; COMMIT; 2. 账户余额操作 sql 复制代码 START TRANSACTION; SELECT balance FROM accounts WHERE user_id = 123 FOR UPDATE; -- 确保余额充足后进行转账 UPDATE accounts SET balance = balance - 500 WHERE user_id = 123; COMMIT; 3. 订单处理 sql 复制代码 START TRANSACTION; SELECT * FROM orders WHERE status = 'pending' FOR UPDATE; -- 处理待处理订单 UPDATE orders SET status = 'processing' WHERE status = 'pending'; COMMIT; 注意事项 1. 必须在事务中使用 sql 复制代码 -- 错误用法(不在事务中) SELECT * FROM table FOR UPDATE; -- 正确用法 START TRANSACTION; SELECT * FROM table FOR UPDATE; -- ... 其他操作 COMMIT; 2. 锁的释放 锁在事务提交或回滚时自动释放 长时间持有锁会影响并发性能 3. 索引的重要性 sql 复制代码 -- 使用主键索引(高效) SELECT * FROM users WHERE id = 1 FOR UPDATE; -- 无索引字段可能导致表锁(性能差) SELECT * FROM users WHERE name = 'John' FOR UPDATE; 4. 与其他锁的区别 锁类型 说明 其他事务能否读取 其他事务能否修改 FOR UPDATE 排他锁 可以(READ COMMITTED) 不可以 LOCK IN SHARE MODE 共享锁 可以 不可以 实际示例 sql 复制代码 -- 银行转账场景 START TRANSACTION; -- 锁定转出账户 SELECT balance FROM accounts WHERE account_no = 'A001' FOR UPDATE; -- 锁定转入账户 SELECT balance FROM accounts WHERE account_no = 'B002' FOR UPDATE; -- 执行转账操作 UPDATE accounts SET balance = balance - 1000 WHERE account_no = 'A001'; UPDATE accounts SET balance = balance + 1000 WHERE account_no = 'B002'; COMMIT; 性能建议 尽量缩短锁持有时间 确保查询条件使用索引 避免在高峰期对热点数据使用 考虑使用乐观锁替代 FOR UPDATE是保证数据一致性的重要工具,但需要谨慎使用以避免死锁和性能问题。

优秀的个人博客,低调大师

监控jumpserver 脚本

当jumpserver 宕机之后 [root@yunwei-ceshi process_sh]# lsof -i:2222 [root@yunwei-ceshi process_sh]# docker ps [root@yunwei-ceshi process_sh]# vim jumpserver.sh 监控执行crontab #/bin/bash jump=`ps -ef | grep docker-pr | grep 2222 |wc -l` if [ $jump = 0 ] ;then echo "0" /usr/bin/docker start 23113822ad44150 else echo "1" fi crontab -e * * * * * 分 时 日 月 周 * * * * * sh /usr/local/zabbix/etc/process_sh/jump.sh 解释:每分钟执行检查命令

优秀的个人博客,低调大师

Ansible 安装脚本

#!/bin/bash #su - chmod 777 /usr/local/src -r; yum -y install gcc gcc++; yum install -y zlib zlib-devel; cd /usr/local/src wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz chmod 777 PYthon-2.7.8.tgz tar xvzf Python-2.7.8.tgz cd Python-2.7.8 ./configure --prefix=/usr/local make make install cd /usr/local/include/python2.7 cp -a ./* /usr/local/include/ cd /usr/bin mv python python2.6 ln -s /usr/local/bin/python sed -i "s%#!/usr/bin/python%#!/usr/bin/python2.6%" /usr/bin/yum sed -i "s%#!/usr/bin/python%#!/usr/bin/python2.6%"/usr/libexec/urlgrabber-ext-down cd /usr/local/src wgethttps://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz chmod 777 setuptools-7.0.tar.gz tar xvzf setuptools-7.0.tar.gz cd setuptools-7.0 python setup.py install cd /usr/local/src wgethttps://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz chmod 777 pycrypto-2.6.1.tar.gz tar xvzf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py install cd /usr/local/src wget http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz chmod 777 yaml-0.1.5.tar.gz tar xvzf yaml-0.1.5.tar.gz cd yaml-0.1.5 ./configure --prefix=/usr/local make make install #cd /usr/local/src #wget https://pypi.python.org/packages/98/cf/197c3b0f73224b84eb419a967f87565bcc0b0c1147012397e6bd2d45e253/#MarkupSafe-0.18.tar.gz#md5=f8d252fd05371e51dec2fe9a36890687 #tar zxvf MarkupSafe-0.18.tar.gz #cd MarkupSafe-0.18 cd /usr/local/src wget https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz chmod 777 PyYAML-3.11.tar.gz tar xvzf PyYAML-3.11.tar.gz cd PyYAML-3.11 python setup.py install cd /usr/local/src wgethttps://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz chmod 777 MarkupSafe-0.9.3.tar.gz tar xvzf MarkupSafe-0.9.3.tar.gz cd MarkupSafe-0.9.3 python setup.py install cd /usr/local/src wgethttps://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz tar zxvf setuptools-2.0.tar.gz cd setuptools-2.0 python setup.py build python setup.py install cd /usr/local/src wget https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz chmod 777 Jinja2-2.7.3.tar.gz tar xvzf Jinja2-2.7.3.tar.gz cd Jinja2-2.7.3 python setup.py install cd /usr/local/src wget https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz chmod 777 ecdsa-0.11.tar.gz tar xvzf ecdsa-0.11.tar.gz cd ecdsa-0.11 python setup.py install cd /usr/local/src wgethttps://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz chmod 777 paramiko-1.15.1.tar.gz tar xvzf paramiko-1.15.1.tar.gz cd paramiko-1.15.1 python setup.py install cd /usr/local/src wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz chmod 777 simplejson-3.6.5.tar.gz tar xvzf simplejson-3.6.5.tar.gz cd simplejson-3.6.5 python setup.py install cd /usr/local/src wget https://github.com/ansible/ansible/archive/v1.7.2.tar.gz mv v1.7.2.tar.gz ansible-1.7.2.tar.gz chmod 777 ansible-1.7.2.tar.gz tar xvzf ansible-1.7.2.tar.gz cd ansible-1.7.2 python setup.py install mkdir -p /etc/ansible cat </etc/ansible/ansible.cfg [defaults] # some basic default values... hostfile = /etc/ansible/hosts \\指定默认hosts配置的位置 # library_path =/usr/share/my_modules/ remote_tmp = $HOME/.ansible/tmp pattern = * forks = 5 poll_interval = 15 sudo_user = root\\远程sudo用户 #ask_sudo_pass = True \\每次执行ansible命令是否询问ssh密码 #ask_pass = True\\每次执行ansible命令时是否询问sudo密码 transport = smart remote_port = 52113 module_lang = C gathering = implicit host_key_checking = False \\关闭第一次使用ansible连接客户端是输入命令提示 log_path = /var/log/ansible.log \\需要时可以自行添加。chown -R root:root ansible.log system_warnings = False \\关闭运行ansible时系统的提示信息,一般为提示升级 # set plugin path directories here,separate with colons action_plugins =/usr/share/ansible_plugins/action_plugins callback_plugins =/usr/share/ansible_plugins/callback_plugins connection_plugins =/usr/share/ansible_plugins/connection_plugins lookup_plugins=/usr/share/ansible_plugins/lookup_plugins vars_plugins =/usr/share/ansible_plugins/vars_plugins filter_plugins =/usr/share/ansible_plugins/filter_plugins fact_caching = memory [accelerate] accelerate_port = 5099 accelerate_timeout = 30 accelerate_connect_timeout =5.0 # The daemon timeout is measured inminutes. This time is measured # from the last activity to theaccelerate daemon. accelerate_daemon_timeout = 30 EOF cat </etc/ansible/hosts #ansible_ssh_host # 要连接的主机名 #ansible_ssh_port # 端口号默认是22 #ansible_ssh_user # ssh 连接时默认使用的用户名 #ansible_ssh_pass # ssh 连接时的密码 #ansible_sudo_pass # 使用sudo连接用户是的密码 #ansible_ssh_private_key_file # 秘钥文件如果不想使用ssh-agent管理时可以使用此选项 #ansible_shell_type # shell 的类型默认sh #ansible_connection # SSH 连接的类型: local , ssh , paramiko在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的 #ansible_python _ interpreter # 用来指定 python 解释器的路径,同样可以指定ruby 、perl 的路径 [testservers] 192.168.10.54 ansible_ssh_port=52113 ansible_ssh_user=rootansible_ssh_pass=geeboo ansible_sudo_pass=geeboo 192.168.10.68 ansible_ssh_port=52113 ansible_ssh_user=rootansible_ssh_pass=geeboo ansible_sudo_pass=geeboo 192.168.10.74 ansible_ssh_port=52113 ansible_ssh_user=rootansible_ssh_pass=geeboo ansible_sudo_pass=geeboo 192.168.10.159 ansible_ssh_port=52113 ansible_ssh_user=rootansible_ssh_pass=geeboo ansible_sudo_pass=geeboo EOF

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册