有什么方法解決嗎,主要是sql查詢關聯幾個表,比較費時
是不是搭建資料庫集群,減輕單臺資料庫壓力
然后就是Sql server資料庫有什么辦法多資料庫實時同步,不出現資料問題
uj5u.com熱心網友回復:
搭建 Alwayson ,只讀訪問只讀輔助副本可以均衡壓力。但在沒有專門優化的情況下, cpu 占用 100% 是可以先作優化處理的。
1. 服務器的cpu, 記憶體是怎樣的, 貼出來;
2. 服務器的磁盤IO,做一下測驗, 特別是資料庫檔案所在的磁區要測。
https://download.csdn.net/download/yenange/9540422
3. 下面的SQL,你在服務器上執行一下,看哪些SQL占用cpu厲害,貼出來。
SELECT TOP 10 OBJECT_NAME(qt.objectid, qt.dbId) AS procName,
DB_NAME(qt.dbId) AS [db_name],
qt.text AS SQL_Full,
SUBSTRING(
qt.text,
(qs.statement_start_offset / 2) + 1,
(
(
CASE statement_end_offset
WHEN -1 THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset
END
- qs.statement_start_offset
) / 2
) + 1
) AS SQL_Part --統計對應的部分陳述句
,
qs.creation_time,
qs.last_execution_time,
qs.execution_count,
qs.last_elapsed_time / 1000000 AS lastElapsedSeconds,
qs.last_worker_time / 1000000 AS lastCpuSeconds,
CAST(
qs.total_elapsed_time / 1000000.0 / (
CASE
WHEN qs.execution_count = 0 THEN -1
ELSE qs.execution_count
END
) AS DECIMAL(28, 2)
) AS avgDurationSeconds,
CAST(qs.last_logical_reads AS BIGINT) * 1.0 / (1024 * 1024) * 8060 AS
lastLogicReadsMB,
qs.last_logical_reads,
qs.plan_handle
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS p
WHERE qs.last_execution_time >= CONVERT(CHAR(10),GETDATE(),120)+' 08:00' --今天8點之后的慢SQL
AND qs.last_elapsed_time >= 3 * 1000 * 1000 --只取執行時間大于 3 秒的記錄
AND qt.[text] NOT LIKE '%Proc_DBA%'
ORDER BY
qs.last_worker_time DESC
uj5u.com熱心網友回復:
用Alwayson簡單些uj5u.com熱心網友回復:
沒有同步資料庫方法嗎,我是想部屬一個想集群一樣的,一個資料庫修改了 其余的資料庫全部都修改uj5u.com熱心網友回復:
alwayson 就是啊, 你自己先了解一下了再說吧。
https://blog.csdn.net/yenange/article/details/46495661
uj5u.com熱心網友回復:
另外, 不要把希望全放在 alwayson 上。如果你的 sql 沒有優化,或者缺少索引, 或者業務上設計不合理, 都是有問題的。
我#1的執行出來的慢sql你要去優化。
uj5u.com熱心網友回復:
因為表不是我自己設計了,有很大的問題,轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/32787.html
標籤:疑難問題
上一篇:求大神解題
下一篇:對mysql資料庫進行操作的時候報錯rogrammingError: (1064, "You have an error in your SQL syntax
