201812-03 SQL優化指南 慢查詢日志開啟撒網模式 開啟了MySQL慢查詢日志之后,MySQL會自動將執行時間超過指定秒數的SQL統統記錄下來,這對于搜羅線上慢SQL有很大的幫助。SHOWVARIABLESLIKE'slow%'以我剛安裝的mysql5.7為例查詢結果是這樣子的:slow_launch_time:表示如果建立線程花費了比這個值更長的時間,slow_launch_threads計數器將增加slow_query_log:是否開啟慢查詢日志ON開啟,OFF關閉默認沒有開啟... 繼續閱讀 >
201711-20 MyFlash——美團點評的開源MySQL閃回工具 由于運維、DBA的誤操作或是業務bug,我們在操作中時不時會出現誤刪除數據情況。早期要想恢復數據,只能讓業務人員根據線上操作日志,構造誤刪除的數據,或者DBA使用binlog和備份的方式恢復數據,不管那種,都非常費時費力,而且容易出錯。直到彭立勛首次在MySQL社區為mysqlbinlog擴展了閃回功能。在美團點評,我們也遇到過研發人員誤刪主站的配置信息,從而導致主站長達2個小時不可用的情況。DBA同學當時使用了技術團隊自研... 繼續閱讀 >
201710-22 為什么說SQL正在擊敗NoSQL,這對數據的未來意味著什么? 隨著計算機的日益普及,各種應用每天產生的數據量呈指數級增長。如何存儲這些數據,有效處理分析這些數據,并從中提取有價值的信息,是當下迫切需要解決的問題。在過去的十年里,NoSQL在軟件工程師陣營里越來越受歡迎,其中最重要的實現是MapReduce,Bigtable,Cassandra,MongoDB,等產品。它主要用于解決SQL的可擴展性問題。然而今天SQL開始回歸。幾乎所有的云計算服務提供商都在提供備受青睞的關系型數據庫管理服務:例如A... 繼續閱讀 >
201708-05 從技巧、案例和工具入手,詳解性能優化怎么做 作者介紹顏圣杰,.NET平臺軟件工程師,對DDD領域驅動設計感興趣,目前在研究ABP框架,熱愛寫作與分享。最近一段時間系統新版本要發布,在beta客戶測試期間,暴露了很多問題,除了一些業務和異常問題外,其它都集中在性能上。有幸接觸到這些性能調優的機會,這里跟大家歸納交流一下。性能優化是一個老生常談的問題了,典型的性能問題如頁面響應慢、接口超時,服務器負載高、并發數低,數據庫頻繁死鎖等。而造成性能... 繼續閱讀 >
201702-28 踩坑CBO,解決那些坑爹的SQL優化問題 本次分享大綱:CBO優化器存在哪些坑CBO優化器坑的解決之道加強SQL審核,將性能問題扼殺于襁褓之中分享現場FAQCBO(CostBasedOptimizer)優化器是目前Oracle廣泛使用的優化器,其使用統計信息、查詢轉換等計算各種可能的訪問路徑成本,并生成多種備選執行計劃,最終Oracle會選擇成本最低的作為最優執行計劃。與“遠古”時代的RBO(RuleBasedOptimizer)相比,顯然更加符合數據庫實際情... 繼續閱讀 >
201701-03 秒殺搶購思路以及高并發下數據安全 我們通常衡量一個Web系統的吞吐率的指標是QPS(QueryPerSecond,每秒處理請求數),解決每秒數萬次的高并發場景,這個指標非常關鍵。舉個例子,我們假設處理一個業務請求平均響應時間為100ms,同時,系統內有20臺Apache的Web服務器,配置MaxClients為500個(表示Apache的最大連接數目)。那么,我們的Web系統的理論峰值QPS為(理想化的計算方式):20*500/0.1=100000(10萬QPS)咦?我們的系統似乎很強大,1秒... 繼續閱讀 >
201612-15 如何寫出高性能SQL語句 1、首先要搞明白什么叫執行計劃?執行計劃是數據庫根據SQL語句和相關表的統計信息作出的一個查詢方案,這個方案是由查詢優化器自動分析產生的,比如一條SQL語句如果用來從一個10萬條記錄的表中查1條記錄,那查詢優化器會選擇“索引查找”方式,如果該表進行了歸檔,當前只剩下5000條記錄了,那查詢優化器就會改變方案,采用“全表掃描”方式??梢?,執行計劃并不是固定的,它是“個性化的”。產生一個正確的“執行計劃”有兩... 繼續閱讀 >
201612-13 Mysql 常用 SQL 語句大全 基礎篇//查詢時間,友好提示$sql="selectdate_format(create_time,'%Y-%m-%d')asdayfromtable_name";//int時間戳類型$sql="selectfrom_unixtime(create_time,'%Y-%m-%d')asdayfromtable_name";//一個sql返回多個總數$sql="selectcount(*)all,";$sql.="count(casewhenstatus=1thenstatusend)status_1_num,";$sql.="count(casewhenstatus=2thenstatusend)status_2_num";$sql... 繼續閱讀 >
201603-14 SQL查詢注意細節大全 一.SQL基礎:SELECT 列名 FROM 表名或者SELECT*from 表名。SELECTLastName,FirstNameFROMPersons* 所有的字段!SQL對大小寫不敏感!3.分號是在數據庫系統中分隔每條SQL語句的標準方法,這樣就可以在對服務器的相同請求中執行一條以上的語句!4.SQLdistinct:在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關鍵詞DISTINCT用于返回唯一... 繼續閱讀 >
201603-12 PHP安全-SQL 注入 SQL注入 SQL注入是PHP應用中最常見的漏洞之一。事實上令人驚奇的是,開發者要同時犯兩個錯誤才會引發一個SQL注入漏洞,一個是沒有對輸入的數據進行過濾(過濾輸入),還有一個是沒有對發送到數據庫的數據進行轉義(轉義輸出)。這兩個重要的步驟缺一不可,需要同時加以特別關注以減少程序錯誤。 對于攻擊者來說,進行SQL注入攻擊需要思考和試驗,對數據庫方案進行有根有據的推理非常有必要(當然假設攻擊者... 繼續閱讀 >
201601-07 數據庫性能優化之SQL語句優化 溫馨提示:本篇內容均來自網上,本人只做了稍微處理,未進行細致研究,僅當做以后不備之需,如若你喜歡可盡情轉走。一、問題的提出在應用系統開發初期,由于開發數據庫數據比較少,對于查詢SQL語句,復雜視圖的的編寫等體會不出SQL語句各種寫法的性能優劣,但是如果將應用系統提交實際應用后,隨著數據庫中數據的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中一個很重要的方面就是SQ... 繼續閱讀 >
201509-17 PHP防XSS 防SQL注入的代碼 functiongjj($str){$farr=array("/\\s+/","/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU","/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",);$str=preg_replace($farr,"",$str);returnaddslashes($str);}functionhg_input_bb($array){if(is_array($array)){foreach($arrayAS$k=>$v){$array[$k]=h... 繼續閱讀 >
201509-10 程序員必掌握的 SQL 指南 介紹SQL 已經應用到了我們周圍的各個角落,不管你信不信。操縱任何種類數據的每個應用程序都需要將數據存放在某處。無論它是大數據,還是只有簡單數行的數據包;無論是政府、還是創業公司;無論是橫跨多臺服務器的大型數據庫、還是運行著自己小型數據庫的手機,SQL無處不在。但是,SQL是什么呢?SQL代表結構化查詢語言,通常,其發音為“ess-que-el”。SQL是數據庫語言,專門為了和數據庫通信而建立的。SQL是一門簡單... 繼續閱讀 >
201506-29 有意思的 SQL語句優化經歷 我用的數據庫是mysql5.6,下面簡單的介紹下場景課程表createtableCourse(c_idintPRIMARYKEY,namevarchar(10))數據100條學生表:createtableStudent(idintPRIMARYKEY,namevarchar(10))數據70000條學生成績表SCCREATEtableSC(sc_idintPRIMARYKEY,s_idint,c_idint,scoreint)數據70w條查詢目的:查找語文考100分的考生查詢語句:selects.*fromStudentswheres.s_idin(selects_idfromSCscwhere... 繼續閱讀 >
201506-29 優化 SQL SELECT 語句性能的 6 個簡單技巧 SELECT語句的性能調優有時是一個非常耗時的任務,在我看來它遵循帕累托原則。20%的努力很可能會給你帶來80%的性能提升,而為了獲得另外20%的性能提升你可能需要花費80%的時間。除非你在金星工作,那里的每一天都等于地球上的243天,否則交付期限很有可能使你沒有足夠的時間來調優SQL查詢。根據我多年編寫和運行SQL語句的經驗,我開始開發一個檢查列表,當我試圖提高查詢性能時供我參考。在進行查詢計劃和閱讀我使用的數據庫文檔... 繼續閱讀 >
201504-26 SQL Server 中的跨庫視圖 在一個SQL中,有多個數據庫,A、B、C,在使用C為連接庫中,現在要查詢A中的表T1。那么,在C中建創視圖(A_T1)。 SELECT*FROMA.dbo.T1這樣就當本地表使用了。 繼續閱讀 >