2015年2月5日 星期四

[T-SQL]如何判斷IP是否落在某段IP範圍內?

        最近要測試Excel的Power Map,一般系統不會記錄使用者的地理資訊,頂多記IP吧,稍微查了Get and prep your data for Power Map,裡面提到Power Map的地理資訊支援下列幾種
Latitude/Longitude pair, City, Country/Region, Zip code/Postal code, State/Province, or Address
        用經緯度分析資料除非資料量非常大,要不然量小看起來沒什意義,那收斂到City感覺比較合理,所以找了一下如何用IP轉City,當然網上一堆服務可以用,但我不想讓DB層對外,想看有沒有現成的對應表可用,結果DB-IP - IP Geolocation and Network Intelligence有現成的DB可下載,免費版的可就可對應到city耶,五百萬筆資料應該也夠測試了 ,於是就下載來試試

        下載回來的資料是csv,我一開始轉入DB時發現一些問題,資料會有亂碼,用Unicode轉進去會剖析不了,發現編碼好像怪怪的,所以調成下圖那樣就可以匯入了


2014年12月30日 星期二

[MySQL]innodb_stats_on_metadata記得要關閉

        最近有個log DB量實在有點大,其中一個大Table每天新增三千萬筆資料,目前Table逼近100G,不得已只好拆成Partitioning Table,以方便清除歷史資料及查詢。

        以MySQL來說,Partitioning Table效能及操作方便性沒有Oracle及SQL Server來的好,分區太多會影響效能,若按天拆分,會有90個分區,因User要求保留三個月資料,後來與User商量的結果,保留近七天的熱資料在分區表上,七天以前的冷資料會每天拆成一個表,這樣要查資料都還調的到

        等我拆完表後,發現一個奇怪的現象,就是Response慢慢慢,比不拆前還慢

        show index慢
     
        查information_schema.PARTITIONS也慢
        
        連Explain也慢

        我還沒Query怎麼會慢成這樣,此時忽然想起之前有看到一篇Solving INFORMATION_SCHEMA slowness,關掉innodb_stats_on_metadata就OK囉
set global innodb_stats_on_metadata=0;
        記得My.ini也要加就是了,要不然重啟又啟用了
innodb_stats_on_metadata=0
        5.5版本預設是開啟的,用5.6就沒有這個問題, 因為5.6預設是關閉的!


        

2014年12月23日 星期二

如何有效率的瀏覽大量的部落格或網站


        話說因為工作的需要,一天要追七八十個資料庫或系統運維等相關的技術網站或部落格,看看那些前輩、達人、牛人及大師有沒有分享新的技術文章,一個一個看是十分浪費時間的,因為不是每個部落格及網站每天都有新文章的,點進去沒有新文章不就白看了,那有沒有工具可以幫你過濾呢?比如說在數十個網站中只顯示那些有新增文章但你尚未瀏覽過的,答案是有的,接下來介紹的兩個工具可以協助你喔!

        使用方式都很簡單,就先註冊一個帳號,把你想追蹤的部落格加進去就可以了,最下方提供一些介紹怎麼使用的文章供參考。那為何我要用兩個呢?因為有的部落格Feedly可加得進去,另一個工具Digg卻加不進去,而我一開始先使用Digg的,就只好兩個都用啦!最後這兩個工具除了電腦版以外也都有APP喔,很方便吧!


相關教學連結如下
Digg Reader:全新的 RSS 閱讀器來了,跟 Google Reader 說再見

2014年12月6日 星期六

[推薦][SQL Server]sp_who加強版系列

        sp_who或sp_who2系列一直以來不斷的有高人加強它衍生出很多版本,這邊紀錄一下看到覺得不錯用的,給不知道的人參考
  • sp_AskBrent 這個含有whoisactive的功能,再加上job、 wait statisticsPerfmon counters的監控,也很不錯
  • sp_whopro 這個最近看到的,對應到最新SQL 2014版本,但還沒試,感覺像whoisactive囉

2014年12月2日 星期二

[SQL Server][Oracle][MySQL][PostgreSQL] IN條件式寫法的差異

        一般找某個資料表的資料是否存在另一個資料表中,就語法上來說,可以用INNER JOIN,若條件式僅JOIN單一欄位,可以改成用IN或EXISTS;若是JOIN多個欄位,就無法用IN囉,這是在SQL Server的情況

        無意間看到在Oracle中,IN條件式的寫法裡竟然可以接受多個欄位呢,另外試了MySQL與PostgreSQL也都可以喔

2014年11月27日 星期四

[MySQL]log_queries_not_using_indexes與slow_query_log同時啟用會造成大量的slow query log

        話說管理的MySQL有啟用slow_query_log,然後發現每天的成長量非常的大 ,每天增加1G吧,量太大了對於分析slow query非常耗時,仔細分析又發現幾乎所有的Query紀錄進去了 ,這不太對啊,log_query_time設1秒,照理說超過1秒才會記錄,但幾乎全紀錄,毫秒微秒級的也記錄作什,看avg、95%跟前五名的都是毫秒級回應,收到這種分析幾乎沒什用