<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 175  文章 - 202  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    第一個Blog,記錄哈哈的生活

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    Java links

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    按照如下步驟安裝到 DBD::mysql 時,出錯,提示找不到 mysql_config

    perl -MCPAN -eshell
    CPAN> install Time::HiRes
    CPAN> install Term::ReadKey
    CPAN> install DBI
    CPAN> install DBD::mysql

    需要到 mysql 網站下載

    MySQL-devel-community-5.1.57-1.rhel5.x86_64.rpm

    安裝,才可以。
    我找了半天。
    posted @ 2011-06-22 13:39 哈哈的日子 閱讀(180) | 評論 (0)編輯 收藏
    轉自:http://dolphin-ygj.iteye.com/blog/366314
    vi替換命令用法詳解
    : ranges /pat1/pat2/g
    其中
    : 這是Vi的命令執行界面。
    range 是命令執行范圍的指定: 百分號(%)表示所有行
    點(.)表示當前行
    美元($)表示最末行

    例如:
    10,20表示第10到20行,
    .,$表示當前行到最后一行,.
    +2,$-5表示當前行后兩行直到全文的倒數第五行

    s 表示其后是一個替換命令。
    pat1 這是要查找的一個正則表達式
    pat2 這是希望把匹配串變成的模式的正則表達式

    g 可選標志,帶這個標志表示替換將針對行中每個匹配的串進行,否則則只替換行中第一個匹配串。


    :/string #向下查找
    :?stirng   # 向上查找


    1

    vi編輯命令責任編輯:黑色聯想   更新日期:2006-9-7重復執行命令
    數字N+命令     重復執行命令N次,如刪除15行,就在命令狀態下輸入15dd
    .              重復執行上一條命令
    vi命令使用的一些選項及含義
    -c sub-command 在對指定的文件編輯前,先執行指定的命令 sub-command .
    -r filename 恢復指定的文件filename .
    -R 將指定的文件以只讀的方式放入編輯器中,這樣不會保存對文件的任何修 改。
    -y number 將編輯窗口的大小設為number行。
    光標移動
    命令模式下,在同一行上移動的子命令:
    h   將光標左移一格
    l   將光標右移一格
    j   將光標下移一格
    k   將光標上移一格
    w   將光標移到下一個小字的前面
    W  將光標移到下一個大字的前面
    b   將光標移到前一個小字的前面
    B   將光標移到前一個大字的前面
    e   將光標移到下一個小字的后面
    E   將光標移到前一個大字的后面
    fc  把光標移到同一行的下一個c字符處
    Fc  把光標移到同一行的前一個c字符處
    tc  把光標移到同一行的下一個字符c的前一格
    Tc  把光標移到同一行的前一個字符c的后一格
    number|把光標移到遞number列上
    命令模式下在行間移動的子命令:     
    +或Enter   把光標移至下一行第一個非空白字符
    -   把光標移至上一行第一個非空白字符 
    0   把光標移到當前行的第一個字符處
    $   把光標移到當前行的最后一個字符處
    H   把光標移到屏幕最頂端一行
    L   把光標移到屏幕最底端一行
    M  把光標移到屏幕中間
    :number 光標移動到第number行
    :$  光標移動到最后以行
    屏幕翻滾類命令
    Ctrl+u   向文件首翻半屏
    Ctrl+d   向文件尾翻半屏
    Ctrl+f   向文件尾翻一屏
    Ctrl+b  向文件首翻一屏
    nz     將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
    插入文本
    I   在光標前
    I   在當前行首
    a   光標后
    A   在當前行尾
    o   在當前行之下新開一行
    O  在當前行之上新開一行
    r   替換當前字符
    R   替換當前字符及其后的字符,直至按ESC鍵
    s   從當前光標位置處開始,以輸入的文本替代指定數目的字符
    S   刪除指定數目的行,并以所輸入文本代替之
    ncw或nCW  修改n個單詞
    nCC修改指定數目的行
    刪除
    x       刪除光標所指的一個字母
    X      刪除光標左邊的一個字母
    dd     刪除光標所在的一行文字,同時本行文字會放到緩存中
    d0     刪至行首
    d$     刪至行尾
    D      刪除本行光標右邊的所有文字,包括光標位置的字母
    d$     刪除本行光標右邊的所有文字,包括光標位置的字母
    dw     刪除光標右邊的一個單詞
    ndw    刪除n個單詞
    d1G       刪除光標所在行以上的所有行
    dG     刪除光標所在行及光標以下所有行
    復制
    yy          復制本行文字到緩存中
    number yy   復制number行到緩存中
    粘貼
    p      把緩存中的行粘貼到光標所在的下一行,
    P      把緩存中的行粘貼到光標所在的上一行
    替換
    :s/pattern1/pattern2/g    把光標當前行的pattern1替換為pattern2
    :%s/pattern1/pattern2/g   把所有行的pattern1替換為pattern2
    :g/parttern1/s//parttern2  把所有行的pattern1替換為pattern2
    :num1,num2 s/pattern1/pattern2/g     把num1到num2的partten1替換為partten2
    被替換的文字用^表示行首,$表示行尾,如:%s/^/111/g就表示在每一行的行首插入111
    文件
    :r filename   把文件filename的內容粘貼在光標以下行
    :w         保存當前編輯的文件名
    :w filename  當filename不存在時,把修改后的文件存為文件filename ,當文件filename
    存在時,報錯。
    !w filename  如果文件filename存在時,把修改后的文件保存為文件filename
    :q         退出vi ,若文件被修改,系統不會讓用戶使用q命令退出
    q!         不保存退出
    x          保存退出
    wq         保存退出
    在多個文件之間切換
    :n開始編輯vi激活的文件列表中的下一個文件
    :n filenames 指定將被編輯的新的文件列表
    在當前文件和另外一個文件間切換:
    :e filename  使用filename激活vi(在vi中裝入另一個文件filename)
    e!         重新裝入當前文件,若當前文件有改動,則丟棄以前的改動
    :e+filename  使用filename激活vi ,并從文件尾部開始編輯
    :e+number filename  使用filename激活vi ,并在第number行開始編輯
    :e#        開始編輯另外一個文件
    查找
    /pattern     向后尋找指定的pattern ,若遇到文件尾,則從頭再開始。
    ?pattern   向前尋找指定的pattern ,若遇到文件頭,則從尾再開始。
    n          在上次指定的方向上,再次執行上次定義的查找。
    N         在上次指定的方向的相反方向上,再次執行上次定義的查找。
    /pattern/+number    將光標停在包含pattern的行后面第number行上。
    /pattern/-number     將光標停在包含pattern的行前面第number行上。
    %                移到匹配的"()"或"{}"上。
    選項設置
    all         列出所有選項設置情況
    term        設置終端類型
    ignorance   在搜索中忽略大小寫
    list         顯示制表位(Ctrl+I)和行尾標志($)
    number    顯示行號
    report       顯示由面向行的命令修改過的數目
    terse       顯示簡短的警告信息
    warn        在轉到別的文件時若沒保存當前文件則顯示NO write信息
    nomagic     允許在搜索模式中,使用前面不帶“\”的特殊字符
    nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
    mesg       允許vi顯示其他用戶用write寫到自己終端上的信息
    、在vi中使用的查找替換方法
    利用 :s 命令可以實現字符串的替換。具體的用法包括:
    :s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串str1
    :s/str1/str2/g 用字符串 str2 替換行中所有出現的字符串str1
    :.,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾所有出現的字符串str1
    :1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現的字符串str1
    :g/str1/s//str2/g 功能同上從上述替換命令可以看到:g 放在命令末尾,表示對搜索字符串的每次出現進行替換;不加 g,表示只對搜索字符串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。

    2、在shell中使用find結合grep進行文件的替換
    # find ./ -exec grep str1 ‘{}’ \; -exec sed -i.bak s/str1/str2/g ‘{}’ \;
    上面命令可以在當前目錄下(包括子目錄)查找包含str1的文件,自動替換成str2,并且生成源文件的bak文件。

     
    posted @ 2011-06-17 15:39 哈哈的日子 閱讀(231) | 評論 (0)編輯 收藏
    準備寫一個說不清楚的問題,我表示鴨梨很大。

    背景:
        1. 業務分區,多用戶,用戶間無交叉
        2. 水平切分,一張表存到兩個庫里去
    Bug:
        用戶1引用了用戶2的數據(這不算什么,后面一句才重要),平時看不出來
    問題:
        第一場
        用戶1來了,建了一大堆東西。
        用戶2來了,關聯了用戶1的東西,因為都分庫到 s1, s2,所以,相安無事。
        第二場
        用戶1來了,又建了一大堆東西。
        用戶2來了,又想關聯用戶1的數據。但是,卻分庫到 s2, s1,注意順序不一樣,然后,沒關聯到,出錯了。

    我另外發現了一個問題,我真無聊。
    posted @ 2011-06-07 17:18 哈哈的日子 閱讀(140) | 評論 (0)編輯 收藏
    目前項目有個需要,就是在所有查詢的參數中,增加一個屬性。
    自然想到使用 interceptor 將每個 parameter wraper 一下,加上這個屬性
    我就使用 cglib 生成了一個 wrapper class,然后再 proxy 到原來的 parameter 上。

    后來,出了錯誤,找了好長時間,發現
    ibatis sql 中寫著 isPrimary,可其實在 java 里是這樣的

    private boolean isPrimary;
    public boolean isPrimary() {
        return isPrimary;
    }

    其實屬性名字是 primary 啊,為什么在 wrapper 之前就不出錯呢。

    找了一下,ibatis 是通過他自己的 probe 來獲得屬性值的,這個 probe 不僅會通過方法取值,還會通過 field name 取值,沒訪問權限的,還會加上權限。

    就是 ClassInfo 的下面方法


      private void addFields(Class clazz) {

        Field[] fields = clazz.getDeclaredFields();

        for (int i = 0; i < fields.length; i++) {

          Field field = fields[i];

          if (canAccessPrivateMethods()) {

            try {

              field.setAccessible(true);

            } catch (Exception e) {

              // Ignored. This is only a final precaution, nothing we can do.

            }

          }

          if (field.isAccessible()) {

            if (!setMethods.containsKey(field.getName())) {

              addSetField(field);

            }

            if (!getMethods.containsKey(field.getName())) {

              addGetField(field);

            }

          }

        }

        if (clazz.getSuperclass() != null) {

          addFields(clazz.getSuperclass());

        }

      }


    解決辦法,將 isPrimary 改成 primary

    posted @ 2011-06-01 15:58 哈哈的日子 閱讀(182) | 評論 (0)編輯 收藏
    也一直使用 quartz,但沒仔細看過,看了一個非常詳細的文章,轉發一下。另外,官方文檔鏈接也附在下面:
    http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html

    轉自:http://wangrui.iteye.com/blog/150947

     一個Cron表達式是由7個子表達式組成的字符串,這些子表達式用空格分隔,其中最后一個子表達式是可選的,其他都是必須的。每個子表達式都描述了一個單獨的日程細節。每一個子表達式的含義如下: 

    子表達式名稱(取值范圍)(允許的特殊字符) 
    1.Seconds秒 (0-59) (, - * /) 
    2.Minutes分鐘 (0-59) (, - * /) 
    3.Hours小時 (0-23) (, - * /) 
    4.Day-of-Month月中的天 (1-31) (, - * ? / L W) 
    5.Month月 (1-12或JAN-DEC) (, - * /) 
    6.Day-of-Week周中的天 (1-7或SUN-SAT) (, - * ? / L #) 
    7.Year(optional)年(可選) (空或1970-2099) (, - * /) 

        一個cron表達式的例子字符串為"0 0 12 ? * WED",這表示“每周三的中午12:00”。 
        
        單個子表達式可以包含范圍或者列表。例如:前面例子中的周中的天這個域(這里是"WED")可以被替換為"MON-FRI", "MON, WED, FRI"或者甚至"MON-WED,SAT"。 
        
        所有的域中的值都有特定的合法范圍,這些值的合法范圍相當明顯,例如:秒和分域的合法值為0到59,小時的合法范圍是0到23,Day-of-Month中值得合法凡范圍是0到31,但是需要注意不同的月份中的天數不同。月份的合法值是0到11。或者用字符串JAN,FEB MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV 及DEC來表示。Days-of-Week可以用1到7來表示(1=星期日)或者用字符串SUN, MON, TUE, WED, THU, FRI 和SAT來表示.  
        
        通配符('*')可以被用來表示域中“每個”可能的值。因此在"Month"域中的*表示每個月,而在Day-Of-Week域中的*則表示“周中的每一天”。 
        
        '?'字符可以用在day-of-month及day-of-week域中,它用來表示“沒有指定值”。這對于需要指定一個或者兩個域的值而不需要對其他域進行設置來說相當有用。 

        '/'字符用來表示值的增量,例如, 如果分鐘域中放入'0/15',它表示“每隔15分鐘,從0開始”,如果在份中域中使用'3/20',則表示“小時中每隔20分鐘,從第3分鐘開始”或者另外相同的形式就是'3,23,43'。 

        'L'字符可以在day-of-month及day-of-week中使用,這個字符是"last"的簡寫,但是在兩個域中的意義不同。例如,在day-of-month域中的"L"表示這個月的最后一天,即,一月的31日,非閏年的二月的28日。如果它用在day-of-week中,則表示"7"或者"SAT"。但是如果在day-of-week域中,這個字符跟在別的值后面,則表示"當月的最后的周XXX"。例如:"6L" 或者 "FRIL"都表示本月的最后一個周五。當使用'L'選項時,最重要的是不要指定列表或者值范圍,否則會導致混亂。 

        'W' 字符用來指定距離給定日最接近的周幾(在day-of-week域中指定)。例如:如果你為day-of-month域指定為"15W",則表示“距離月中15號最近的周幾”。 

        '#'表示表示月中的第幾個周幾。例如:day-of-week域中的"6#3" 或者 "FRI#3"表示“月中第三個周五”。 
    posted @ 2011-05-30 10:23 哈哈的日子 閱讀(245) | 評論 (0)編輯 收藏
    1. 在之前的2.x版本下,我一般編譯程序到機子的做法是修改xproject去掉iPhone Developer的方法,(參考http://www.cocoachina.com/bbs/read.php?tid-1822-fpage-4.html )
    如果以前這樣修改過xproject文件的,要先恢復到原始狀態,把iPhone Developer那句話加回去(隨意找個2.x時期的官方sample就有)
    2. 制作自己的證書,制作方法參考http://www.weiphone.com/thread-222380-1-1.html ,說明的是,最后的存放位置據說應該是登錄(login)而不是系統,反正我現在用的就是登錄.
    3. 打開終端,執行如下代碼,這個是XCode的補丁,因為在3.13的xcode修補了3.12的免簽名漏洞,打這個補丁才行
    #!/bin/bash
    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\x8f\x2a\x00\x00" >> working
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support
     
    或者你懶的去執行,也可以下載這個文件(要解壓下)    patch.sh.zip (1 K) 下載次數:103 放在用戶根目錄,執行
    sudo sh ./patch.sh

    4. 在終端執行如下命令

    mkdir /Developer/iphoneentitlements30
    cd /Developer/iphoneentitlements30
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt 
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    5. XCode中打開你的project,在菜單project->New Build Phase > New Run Script Build Phase,那個script空白框,拷貝如下代碼進去

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements30/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --resource-rules "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/ResourceRules.plist" \
    --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"  "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi
     

    6. 修改"/Developer/Platforms/iPhoneOS.platform/Info.plist"文件,默認是用Property List Editor打開,然后添加:
    PROVISIONING_PROFILE_ALLOWED = NO
    PROVISIONING_PROFILE_REQUIRED = NO

    7. 在你的project的info.list里面增加一行,也就是你之前步驟2建的自定義的證書名字啦.
    SignerIdentity=iPhone Developer 

    8. 把你的iphone連接到電腦,提示連接成功,后 xcode菜單,window->Organizer里面,把iphone設為調試設備.
    對了,我忘記了我做的一個步驟,不知道是不是必須的,這里補上
    9. iphone要安裝MobileInstallation Patch ,安裝步驟:打開cydia,進入manage->sources->edit->Add,在網址輸入框里面輸入www.iphone.org.hk/adp/ 
    完成后,進入sources 可以看到www.iphone.org.hk 這個網站,然后進去,可以找到MobileInstallation Patch,點擊安裝即可.
    安裝完成重啟手機.
    posted @ 2011-05-17 00:29 哈哈的日子 閱讀(242) | 評論 (0)編輯 收藏

    轉自:http://blog.csdn.net/cafecheng/archive/2009/07/17/4357248.aspx



    H2, HSQLDB, DERBY, POSTGRESQL, MYSQL

    openSourceDatabaseComparison

    posted @ 2011-05-06 16:58 哈哈的日子 閱讀(1095) | 評論 (0)編輯 收藏
         摘要: 轉自:http://www.001pp.com/chengxuyouhua/mysql%20xingnengyouhua2183.html 網上有不少mysql 性能優化方案,不過,mysql的優化同sql server相比,更為麻煩與負責,同樣的設置,在不同的環境下 ,由于內存,訪問量,讀寫頻率,數據差異等等情況,可能會出現不同的結果,因此簡單地根據某個給出方案來配置mysql是行不通的,...  閱讀全文
    posted @ 2011-05-04 15:50 哈哈的日子 閱讀(182) | 評論 (0)編輯 收藏

    轉自 http://imysql.cn/node/609

    作/譯者:吳炳錫,來源:http://imysql.cn & http://imysql.cn/blog/3208 轉載請注明作/譯者和出處,并且不能用于商業用途,違者必究。

     

    介紹:
    InnoDB給MySQL提供了具有提交,回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎。InnoDB鎖定在行級并且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。這些特色增加了多用戶部署和性能。沒有在InnoDB中擴大鎖定的需要,因為在InnoDB中行級鎖定適合非常小的空間。InnoDB也支持FOREIGN KEY強制。在SQL查詢中,你可以自由地將InnoDB類型的表與其它MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。
    Innodb 的創始人:Heikki Tuuri
    Heikki Tuuri在Innodb的Bug社區里也是很活躍的,如果遇到Bug也可以直接提到社區,得到作者的解答。

    為什么要學習Innodb的調優:
    目前來說:InnoDB是為Mysql處理巨大數據量時的最大性能設計。它的CPU效率可能是任何其它基于磁盤的關系數據庫引擎所不能匹敵的。在數據量大的網站或是應用中Innodb是倍受青睞的。
    另一方面,在數據庫的復制操作中Innodb也是能保證master和slave數據一致有一定的作用。

    參數調優內容:
      1. 內存利用方面
    2. 日值控制方面
    3. 文件IO分配,空間占用方面
    4. 其它相關參數

    1.內存利用方面:
    首先介紹一個Innodb最重要的參數:
    innodb_buffer_pool_size
    這個參數和MyISAM的key_buffer_size有相似之處,但也是有差別的。這個參數主要緩存innodb表的索引,數據,插入數據時的緩沖。為Innodb加速優化首要參數。
    該參數分配內存的原則:這個參數默認分配只有8M,可以說是非常小的一個值。如果是一個專用DB服務器,那么他可以占到內存的70%-80%。這個參數不能動態更改,所以分配需多考慮。分配過大,會使Swap占用過多,致使Mysql的查詢特慢。如果你的數據比較小,那么可分配是你的數據大小+10%左右做為這個參數的值。例如:數據大小為50M,那么給這個值分配innodb_buffer_pool_size=64M
    設置方法:
    innodb_buffer_pool_size=4G
    這個參數分配值的使用情況可以根據show innodb status\G;中的
    ----------------------
    BUFFER POOL AND MEMORY
    ----------------------
    Total memory allocated 4668764894;
     
    去確認使用情況。


    第二個:
    innodb_additional_mem_pool:
    作用:用來存放Innodb的內部目錄
    這個值不用分配太大,系統可以自動調。不用設置太高。通常比較大數據設置16M夠用了,如果表比較多,可以適當的增大。如果這個值自動增加,會在error log有中顯示的。
    分配原則:
    show innodb status\G;去查看運行中的DB是什么狀態(參考BUFFER POOL AND MEMORY段中),然后可以調整到適當的值。
    ----------------------
    BUFFER POOL AND MEMORY
    ----------------------
    Total memory allocated 4668764894; in additional pool allocated 16777216
    參考:in additional pool allocated 16777216
    根據你的參數情況,可以適當的調整。
    設置方法:
    innodb_additional_mem_pool=16M


    2.關于日值方面:
    innodb_log_file_size
    作用:指定日值的大小
    分配原則:幾個日值成員大小加起來差不多和你的innodb_buffer_pool_size相等。上限為每個日值上限大小為4G.一般控制在幾個LOG文件相加大小在2G以內為佳。具體情況還需要看你的事務大小,數據大小為依據。
    說明:這個值分配的大小和數據庫的寫入速度,事務大小,異常重啟后的恢復有很大的關系。
    設置方法:
    innodb_log_file_size=256M


    innodb_log_files_in_group
    作用:指定你有幾個日值組。
    分配原則: 一般我們可以用2-3個日值組。默認為兩個。
    設置方法:
    innodb_log_files_in_group=3


    innodb_log_buffer_size:
    作用:事務在內存中的緩沖。
    分配原則:控制在2-8M.這個值不用太多的。他里面的內存一般一秒鐘寫到磁盤一次。具體寫入方式和你的事務提交方式有關。在Oracle等數據庫了解這個,一般最大指定為3M比較合適。
    參考:Innodb_os_log_written(show global status 可以拿到)
    如果這個值增長過快,可以適當的增加innodb_log_buffer_size
    另外如果你需要處理大理的TEXT,或是BLOB字段,可以考慮增加這個參數的值。
    設置方法:
    innodb_log_buffer_size=3M

    innodb_flush_logs_at_trx_commit
    作用:控制事務的提交方式
    分配原則:這個參數只有3個值,0,1,2請確認一下自已能接受的級別。默認為1,主庫請不要更改了。
    性能更高的可以設置為0或是2,但會丟失一秒鐘的事務。
    說明:
    這個參數的設置對Innodb的性能有很大的影響,所以在這里給多說明一下。
    當這個值為1時:innodb 的事務LOG在每次提交后寫入日值文件,并對日值做刷新到磁盤。這個可以做到不丟任何一個事務。
    當這個值為2時:在每個提交,日志緩沖被寫到文件,但不對日志文件做到磁盤操作的刷新,在對日志文件的刷新在值為2的情況也每秒發生一次。但需要注意的是,由于進程調用方面的問題,并不能保證每秒100%的發生。從而在性能上是最快的。但操作系統崩潰或掉電才會刪除最后一秒的事務。
    當這個值為0時:日志緩沖每秒一次地被寫到日志文件,并且對日志文件做到磁盤操作的刷新,但是在一個事務提交不做任何操作。mysqld進程的崩潰會刪除崩潰前最后一秒的事務。

    從以上分析,當這個值不為1時,可以取得較好的性能,但遇到異常會有損失,所以需要根據自已的情況去衡量。


    設置方法:
    innodb_flush_logs_at_trx_commit=1

    3. 文件IO分配,空間占用方面
    innodb_file_per_table
    作用:使每個Innodb的表,有自已獨立的表空間。如刪除文件后可以回收那部分空間。
    分配原則:只有使用不使用。但DB還需要有一個公共的表空間。
    設置方法:
    innodb_file_per_table=1

    innodb_file_io_threads
    作用:文件讀寫IO數,這個參數只在Windows上起作用。在LINUX上只會等于4
    設置方法:
    innodb_file_io_threads=4

    innodb_open_files
    作用:限制Innodb能打開的表的數據。
    分配原則:如果庫里的表特別多的情況,請增加這個。這個值默認是300。
    設置方法:
    innodb_open_files=800 
    請適當的增加table_cache


    4. 其它相關參數
    這里說明一個比較重要的參數:
    innodb_flush_method
    作用:Innodb和系統打交道的一個IO模型
    分配原則:Windows不用設置。
    Unix可以設置:fsync() or O_SYNC/O_DSYNC
    如果系統可以禁止系統的Cache那就把他禁了。
    Linux可以選擇:O_DIRECT 
    直接寫入磁盤,禁止系統Cache了
    設置方法:
    innodb_flush_method=O_DIRECT

    innodb_max_dirty_pages_pct 
    作用:控制Innodb的臟頁在緩沖中在那個百分比之下,值在范圍1-100,默認為90.
    這個參數的另一個用處:當Innodb的內存分配過大,致使Swap占用嚴重時,可以適當的減小調整這個值,使達到Swap空間釋放出來。建義:這個值最大在90%,最小在15%。太大,緩存中每次更新需要致換數據頁太多,太小,放的數據頁太小,更新操作太慢。
    設置方法:
    innodb_max_dirty_pages_pct=90
    動態更改需要有Super權限:
    set global innodb_max_dirty_pages_pct=50;

    總結:
    這里只算是列出了Innodb部分的重要參數,不能認為是對Mysql的整體調優。Mysql的參數一般分為:全局參數,具體引擎的參數。全局參數方面請參考http://imysql.cn/2007_12_08_optimize_mysql_under_linux yejr的那個Mysql調優的PPT。

    posted @ 2011-05-04 15:37 哈哈的日子 閱讀(211) | 評論 (0)編輯 收藏
    手動創建目錄 .ssh 的時候,權限可能不對,默認應該是 775,這樣不行,需要改成 755 或者 700 之類的,才可以。
    authorized_keys 文件權限也要改成 600

    順便把步驟寫一下:

    1. ssh-keygen 生成 key pair,默認是 rsa 的
    2. 把 public key 放到服務器上,然后執行 cat xxx >> ~/.ssh/authorized_keys,xxx 是 public key 文件名

    posted @ 2011-05-04 10:04 哈哈的日子 閱讀(197) | 評論 (0)編輯 收藏
    僅列出標題
    共17頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 久久久久亚洲AV成人网人人网站| 日本一区二区三区免费高清| 啊灬啊灬别停啊灬用力啊免费看| 亚洲精品天堂无码中文字幕| 亚洲第一成年免费网站| 亚洲中文无码av永久| 精品国产免费人成电影在线观看| 久久精品国产亚洲AV大全| 精品国产无限资源免费观看| 精品久久亚洲中文无码| 在线免费观看一级毛片| 亚洲乱亚洲乱妇24p| 亚洲 小说区 图片区 都市| 好湿好大好紧好爽免费视频| 久久亚洲国产精品五月天婷| 日本免费污片中国特一级| 亚洲精品美女久久久久9999| 久久久久国色AV免费看图片| 亚洲a∨国产av综合av下载| 亚洲高清无码综合性爱视频| a级精品九九九大片免费看| 337p欧洲亚洲大胆艺术| 99精品国产免费久久久久久下载| 亚洲乱码日产精品一二三| 亚洲一级二级三级不卡| 免费观看无遮挡www的小视频| 亚洲午夜无码久久久久小说| 全亚洲最新黄色特级网站 | 免费无码黄十八禁网站在线观看| 亚洲经典千人经典日产| 亚洲人成网站观看在线播放| 免费91麻豆精品国产自产在线观看 | 爱情岛亚洲论坛在线观看| 国产亚洲一区区二区在线| 97在线视频免费播放| 亚洲精品V天堂中文字幕| 在线播放亚洲第一字幕| 希望影院高清免费观看视频| 青青视频免费在线| 亚洲男人的天堂在线| 亚洲AV成人精品日韩一区18p|