• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 119  文章 - 290  trackbacks - 0

            博客搬家了哦,請移步
            叫我abc

            常用鏈接

            留言簿(12)

            隨筆分類

            我的博客

            搜索

            •  

            積分與排名

            • 積分 - 304348
            • 排名 - 84

            最新評論

            閱讀排行榜


            前陣子交代了mysql的一些初級安裝問題,接下來繼續。

            1.設置存儲引擎(strorage engine)
            mysql有很多存儲引擎,不同的引擎有不同的存儲特性,應對不同的解決方案,這就不多說了。
            不過最基本的,應該是不用myisam,雖然它很快,但是不支持事務。
            innodb并不慢,雖然不可能會有myisam那么快,但是它支持事務,完整性優于更好的效率。
            所以配置mysql的第一步,就是設置已經選好的存儲引擎——innodb
            在.my.cnf配置文件中加上
            [server]
            default-storage-engine=INNODB

            2.設置數據存儲位置
            本來不會有這一步的,數據文件默認的會保存在mysql/data目錄下。但是我當前的磁盤分區快滿了,今后肯定沒有辦法導入大量數據,無奈之下加了塊磁盤,然后把數據存儲位置設置到新磁盤下。
            因為使用的是innodb,所以默認的數據源就不進行移動了,只要設置innodb的目錄即可
            [server]
            innodb_data_home_dir=/newdisk
            innodb_log_group_home_dir=/newdisk
            其中一個是數據文件目錄,另外一個是log目錄,這個log和binlog還不太一樣,主要是用來維護事務完整性的吧,并不是備份用的。
            The ib_logfile's hold statements affecting innodb tables only. If a crash occurs they are automatically used to complete any innodb transactions that didn't complete before the crash.

            3.設置字符集
            我想這是初次使用mysql的人通常會遇到的問題,而且越晚發現越致命吧。
            mysql支持多字符集,為了支持國際化存儲,通常服務器的字符集肯定會設置成utf8。不過沒有國際化需求的同學可以大大方方的使用gb2312/gbk之類的本地字符集。(默認是latin)
            [server]
            character_set_server=utf8
            服務器的字符集設置其實是次要的,畢竟可以通過create database或者create table來設置更具體的存儲字符集。
            客戶端的字符集設置是關鍵,分為三部分:
            1.client set。即作為數據源所使用的字符集。比如你從文件中導入數據到mysql,那么應該將client set設置為文件所用的字符集;又比如你通過客戶端執行插入語句,那么應該將client set設置成客戶端所用的字符集;我的secureCRT是utf8的,所以client set=utf8。
            2.connection set。mysql服務器收到數據后,會將文字從client set轉換成connection set。
            為什么要有一個connection set呢,直接轉換成存儲字符集入庫不就好了嗎?我查了一下,使用connection set的理由是,文字長度和文字比較等事情的結果,會根據字符集的不同而不同的。
            connection set可以根據需要設置,只要別是有損轉換即可。通常會和client set保持一致而去掉轉換,如果比較結果不影響什么的話。
            3.result set。mysql執行語句的結果集在發給你之前,會先轉換成result set,通常會和client set一致。你的客戶端用什么就讓它返回什么就好。
            我會選擇所有的字符集都用一種,這樣也就不需要什么轉換了。
            [client]
            default-character-set=utf8
            或者set names utf8(執行語句)

            4.表空間(table space)

            之所以提到表空間的問題,是因為innodb會把所有的數據都寫入到一個數據文件上,如果你不修改默認設置的話。訪問一個超大的文件和訪問多個較大的文件在效率上相比是怎樣我不清楚,但是我的當時導入數據的時候是越來越慢,于是就改成使用多個表空間(數據文件)了。
            [server]
            innodb_autoextend_increment=50
            innodb_data_file_path=ibdata1:700M;ibdata2:2200M;ibdata3:1250M;autoextend
            在多個表空間的情況下,mysql只會往最新的一個數據文件上寫數據,所以前面的表空間會固定在這個大小。
            除非老的表空間因刪除數據而有空閑,不然是不會往里寫入的,并且老的表空間是不會再增大的。
            這種多表空間的使用方式,需要偶爾停下機,新建一個表空間,還是挺麻煩的。
            posted on 2009-03-29 20:50 LOGOS 閱讀(1889) 評論(0)  編輯 收藏 引用 所屬分類: mysql入門
            蜜臀久久99精品久久久久久小说| 亚洲AV无码久久精品狠狠爱浪潮 | 日韩一区二区三区视频久久| 国产成人香蕉久久久久| 久久青青草原精品国产软件| 国内精品伊人久久久影院| 亚洲伊人久久精品影院| 久久青青草原精品影院| 欧美性大战久久久久久| 亚洲精品美女久久久久99| 青草影院天堂男人久久| 欧美伊人久久大香线蕉综合| 狠狠色丁香久久综合五月| 亚洲人成无码www久久久| 国产精品99久久免费观看| 一级女性全黄久久生活片免费| 久久久久亚洲精品无码蜜桃| www亚洲欲色成人久久精品| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 国产精品美女久久久久网| 色婷婷噜噜久久国产精品12p| 久久亚洲私人国产精品vA| 亚洲精品视频久久久| 久久本道伊人久久| 无码精品久久久天天影视 | 国产精品久久久久aaaa| 亚洲国产成人精品女人久久久 | 久久精品一区二区三区AV| 国内精品久久久久影院网站| 国产成人久久精品一区二区三区 | 久久香综合精品久久伊人| 伊人久久亚洲综合影院| 99久久久久| 99热成人精品热久久669| 99蜜桃臀久久久欧美精品网站 | 狠狠色丁香久久婷婷综| 久久精品亚洲一区二区三区浴池 | 精品人妻伦九区久久AAA片69| 久久国产成人午夜aⅴ影院| av无码久久久久不卡免费网站| 日韩人妻无码一区二区三区久久|