原创 利用Python多進程並行執行加快MySQL批量UPDATE執行速度

現在有個表t mysql> desc t; +----------------+--------------+------+-----+---------+----------------+ | Field | Typ

原创 A.COLUMN LIKE B.COLUMN% 關聯的優化方法

現在有個SQL要跑10秒: SQL> select a0.id, 2 a1.room_no, 3 a1.user_name, 4 a1.user_no, 5

原创 MySQL根據主鍵切割大事務(變相ROWID切片)

不管是Oracle,MySQL,還是PostGre SQL,跑大事務都會嚴重影響數據庫性能 在Oracle裏面可以利用rowid切片的方式處理大事務,如果不清楚什麼是rowid切片,可以買一本《SQL優化核心思想》看看 MySQL沒有Or

原创 MySQL8.0.19 MGR MySQL router MySQL connector failover 組合實現高可用

首先在虛擬機中搭建3臺Linux(Redhat8.0)服務器,分別命名爲server01,server02,server03 在每臺虛擬機中安裝好MySQL8.0.19,server_id分別設置爲1,2,3,每臺數據庫創建複製賬戶,並且

原创 抓出Oralce當前賬戶下所有表建表語句,遷移到MySQL

有時候需要導出當前Oracle賬戶下所有的表結構信息,在其他Oracle測試庫重建,或者遷移到MySQL數據庫中 雖然可以用工具,但是本人還是習慣自己動手 本腳本會將分區表處理爲非分區表,如需添加分區信息,自己改腳本 本腳本只支持nu

原创 利用Python解析MySQL BINLOG從而回滾UPDATE和DELETE誤操作

MySQL沒有Oracle的閃回(flashback)功能,如果不小心執行了UPDATE或者DELETE誤操作,想要回滾相比Oracle還是挺麻煩的 可以利用mysqlbinlog工具解析binlog,從而拼接出UPDATE和DELETE

原创 利用Python監控MySQL當前跑的TOP SESSION

利用ps命令抓出MySQL PID,根據PID再監控每個線程CPU使用率以及跑的SQL語句 import pymysql import os import time os.environ['NLS_LANG']='SIMPLIFIED

原创 Oracle中TX鎖(行鎖)監控,抓TX鎖的源頭

各位DBA,看到這篇文章是不是很開心,解決了你一個大麻煩,趕緊把它部署到實時監控程序吧 (咳咳,轉載,抄襲不註明文章出處的人可恥哈) session 1: update emp_bak set ename='沙雕' where empno

原创 利用Python監控Oracle當前跑的TOP SESSION

利用linux top命令抓出Oracle當前正在跑的進程,記錄進程消耗的%CPU,%MEM,RES 根據PID查詢當前跑的SQL,以及當前等待事件,監控程序每3秒執行一次 import cx_Oracle import os impo

原创 利用Python將EXCEL,CSV,TSV導入Oracle或者MySQL

雖然可以用Kettle等ETL工具將EXCEL,CSV,TSV等格式的文件導入Oracle或者MySQL,但是還是覺得寫點代碼心裏踏實些 import cx_Oracle import pymysql import pandas imp

原创 利用Python發送QQ郵件

發送QQ郵件之前,要先開啓QQ郵箱IMAP/SMTP服務,並且記住授權碼 import smtplib from email.mime.text import MIMEText mail_sender='你的qq號@qq.com'

原创 利用Python將數據庫查詢結果導出爲EXCEL,CSV,TSV格式(性能比Kettle高接近1倍)

雖然可以用Kettle等ETL工具將數據庫查詢結果導出爲EXCEL,CSV,TSV格式 但是Kettle等ETL工具導出效率太慢,實測本人寫的Python腳本導出效率快高出Kettle一倍 import cx_Oracle import

原创 在Oracle和MySQL中利用SQL查詢出今年日曆

Oracle寫法: select case when rank() over(partition by month order by week) = 1 then month el

原创 利用Python腳本實現Oracle與MySQL之間數據遷移

雖然可以用kettle等ETL工具來做數據遷移,但是現在Python很流行,Python編碼也特簡單,所以就寫個Python腳本來實現數據遷移 import cx_Oracle import pymysql import os impo

原创 MySQL根據主鍵切片(變相ROWID切片)

不管是Oracle,MySQL,還是PostGre SQL,跑大事務都會嚴重影響數據庫性能 在Oracle裏面可以利用rowid切片的方式處理大事務,如果不清楚什麼是rowid切片,可以買一本《SQL優化核心思想》看看 MySQL沒有Or