1. 查詢執行慢的sql
mysql查詢當前執行的sql
select
*from information schema
.processlist where info is
notnull
;
time列是sql持續的時間,單位是秒,越少越好,至少會有一條記錄,就是當前的監控sql。
mysql查詢未提交事務中的歷史sql
select
ps.id 'process id'
, ps.
user
, ps. host,
esh.event_id,
trx.trx_started,
esh.event_name 'event name'
, esh.sql_text 'sql'
, ps.
time
from
performance_schema.events_statements_history esh
join performance_schema.threads th on esh.thread_id = th.thread_id
join information_schema.processlist ps on ps.id = th.processlist_id
left
join information_schema.innodb_trx trx on trx.trx_mysql_thread_id = ps.id
where
ps.time
>
60and trx.trx_id is
notnull
and ps.
user
!='system_user'
order
by esh.event_id;
當發現有鎖長期存在,影響別的事務,就需要本指令碼
sqlserver查詢執行過的sql
select
top10
qs.total_worker_time / qs.execution_count /
1000 耗時
,st.
text
as sql_statement
,qs.creation_time as plan_last_compiled
,qs.last_execution_time as plan_last_executed
,qs.execution_count as plan_executed_count
,qp.query_plan
from sys.dm_exec_query_stats qs
cross
cross
order
by plan_last_executed desc
沒有準『實時』的抓取功能,只能是『偽實時』
2. sql 事務、鎖分析
select
*from information_schema.
`processlist`
where info is
notnull
;select
*from information_schema.innodb_trx;
-- 顯示掛起的事務
select
*from information_schema.innodb_lock_waits;
-- 鎖等待
select
*from information_schema.innodb_locks;
-- 正在使用的鎖
select
*from information_schema.innodb_trx;
kill trx_mysql_thread_id;
3. 資料表資訊收集
mysql 單錶資訊收集,表的記錄數,及佔空間情況
select table_schema,table_name,
round
((data_length+index_length)
/1024
/1024
/1024,3
)`size(gb)
`,table_rows from information_schema.
tables
where table_name =
'vote_record'
sqlserver 單錶資訊收集
exec sp_spaceused '表名'
4.效能主意點
a. 使用連線join來代替子查詢
查詢沒有子表資訊的主表記錄
select
*from employee where id notin(
select empid from employeeinfo)
;// 優化
select
*from employee e left
join employeeinfo einfo on e.id = einfo,empid
where einfo.empid is
null;
b. 使用索引的注意點
最好在相同型別的字段間進行比較
在建有所有的字段上盡量不要使用函式操作
select
*from
order
where
year
(orderdate)
<
2001
;select
*from
order
where orderdate <
'2001-01-1'
;
慎用like 「%abc%」 這是以犧牲效能為代價的
索引是可以多欄位
create
index ix_date_emp on t_工作日誌表 (
date
, empid)
;create
index ix_emp_date on t_工作日誌表 (empid,
date);
create
index ix_date on t_工作日誌表 (
date);
create
index ix_emp on t_工作日誌表 (empid)
;
c. 使用冗餘字段
記錄表,例項表等表結構,可以違反3nf,增加冗餘字段,比如保留操作人姓名,部門名稱,訂單總價等等。方便查詢
d. 減少乙個sql中join 的個數
效能優化瑣碎事
對於一張 100 100 畫素的來說,影象上有 10000 個畫素點,如果每個畫素的值是rgba儲存的話,那麼也就是說每個畫素有 4 個通道,每個通道 1 個位元組 8 位 1個位元組 所以該大小大概為 39kb 10000 1 4 1024 但是在實際專案中,一張可能並不需要使用那麼多顏色去顯示,...
app 效能優化的那些事
iphone上面的應用一直都是以流暢的操作體驗而著稱,但是由於之前開發人員把注意力更多的放在開發功能上面,比較少去考慮效能的問題,可能這其中涉及到objective c,c 跟lua,優化起來相對複雜一些,導致應用在比如touch等較低端的產品上,光從啟動到進入頁面就花了將近一分鐘的時間,頁面之間的...
iOS app效能優化的那些事 二
tableview 滑動不流暢 那碰到這種情況該怎麼處理,分析影象動畫效能主要用的是core animation這個元件,先簡單介紹一下裡面一些經常用到的選項 當你碰到效能問題的時候,你可以思考一下 是否受到cpu或者gpu的限制?是否有不必要的cpu渲染?是否有太多的離屏渲染操作?是否有太多的圖層...