• <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)

            隨筆分類

            我的博客

            搜索

            •  

            積分與排名

            • 積分 - 303672
            • 排名 - 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 閱讀(1882) 評論(0)  編輯 收藏 引用 所屬分類: mysql入門
            国产福利电影一区二区三区久久久久成人精品综合 | 久久人妻无码中文字幕| 久久久国产精华液| 久久ww精品w免费人成| 久久夜色tv网站| 久久亚洲国产最新网站| 久久久久久久亚洲Av无码| 色成年激情久久综合| 久久精品国产AV一区二区三区| 国产美女久久精品香蕉69| 亚洲国产成人久久综合野外| 国产美女久久精品香蕉69| 伊色综合久久之综合久久| 国产精品久久久久久影院| 久久精品综合网| 国产午夜精品理论片久久| 久久精品无码午夜福利理论片 | 久久精品一区二区三区中文字幕 | 久久成人18免费网站| 久久99热只有频精品8| 99精品国产99久久久久久97| 久久福利片| 91精品国产91久久久久久青草 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产精品欧美亚洲韩国日本久久| 99久久99久久精品国产片果冻| 久久综合久久鬼色| 久久最新免费视频| 久久久久久av无码免费看大片| 久久精品国产精品国产精品污| 日韩人妻无码一区二区三区久久| 狠狠色丁香久久婷婷综合_中 | 久久人妻少妇嫩草AV无码蜜桃| 99久久精品免费| 久久av高潮av无码av喷吹| 国产精品欧美久久久久天天影视| 99久久精品免费国产大片| 久久乐国产精品亚洲综合 | 久久天堂AV综合合色蜜桃网| 2021国内精品久久久久久影院| 热久久视久久精品18|