java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...
引言
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL
關于如何更改datadir目錄的問題:
ubuntu默認安裝mysql的時候,會將datadir設置為
/var/lib/mysql
下面,但是我們大多數時候都需要指定一個我們準備好的方便查找的目錄為數據存儲目錄,我們可以在
my.cnf
下面更改
datadir
這一行,將'
=
'后邊的目錄更改成我們自己的目錄即可。
例如:我將datadir改成
/data
下,則在my.cnf中做如下更改,在
[mysqld]
段
port = 3306
basedir = /usr
datadir = /data/mysql
更改完成保存退出,可以重啟mysql服務了,不知道您的服務器會不會報錯,我的反正mysql是起不來了。只要將datadir換回來就能啟動。出現這個問題的原因是在ubuntu中存在一個apparmor的服務。
這個服務主要作用是主要的作用是設置某個可執行程序的訪問控制權限,可以限制程序 讀/寫某個目錄/文件,打開/讀/寫網絡端口等等。(原來,我們雖然講新的目錄所有者改為了mysql,但我們沒有告訴mysql要給新的目錄什么權限,于是就悲劇了)
他的配置文件在
/etc/apparmor.d/
中,在這里我們可以看到一個
usr.sbin.mysqld
的配置文件,打開看一下就明白了。我們的日志路徑、pid路徑等等都存放在這里,所以我們要改datadir路徑,這里也需要做更改,要更改log路徑同樣也要在這里更改。更改后配置如下:
/logs/mysql/mysql.log rw,
/logs/mysql/mysql.err.log rw,
/data/mysql/ r,
/data/mysql/** rwk,
/logs/mysql/ r,
/logs/mysql/* rw,
這是我更改過的路徑。更改完成以后,因為這是一個服務,所以我們需要重啟一下這個服務。
/etc/init.d/apparmor restart
這里基本上不會存在問題了,(我就是在這里重啟了一下服務器,就OK了),如果還是無法啟動你的mysql,那么請使用如下命令
mysql_install_db --datadir=/data/mysql
查看一下是不是有報錯信息,根據錯誤排查一下。
最終按照這個方法解決了問題。真是多謝前輩。
最后本人做個總結,只作為一種嘗試解決方案:
將mysql默認的datadir目錄"/var/lib/mysql"改為 "/home/mysql_data"
1、關掉數據庫
sudo /etc/init.d/mysql stop
2、因為我們指定的數據庫文件目錄為/home/mysql_data
cd /home //打開home
mkdir mysql_data //創建目錄
chown mysql:mysql mysql_data //并修改其擁有者及所屬群組為mysql:mysql.命令
//修改mysql配置文件my.cnf:
將 datadir=/var/lib/mysql 改為 datadir=/home/mysql_data
3、修改ubuntu中的安全設置
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
在這個文件里面加入權限設定,將原來的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
更換成(或直接添加)
/home/mysql_data/mysql/ r,
/home/mysql_data/mysql/** rwk,
4、重新初始化數據文件:執行
sudo mysql_install_data
5、啟動mysql數據庫服務(或重啟服務器):
sudo /etc/init.d/mysql start
這個方法中最值得一提是修改
/etc/apparmor.d/usr.sbin.mysqld
這個文件,改變應用程序的權限。
MySQL索引實現
在MySQL中,索引屬于存儲引擎級別的概念,不同存儲引擎對索引的實現方式是不同的,本文主要討論MyISAM和InnoDB兩個存儲引擎的索引實現方式。
MyISAM索引實現
MyISAM引擎使用B+Tree作為索引結構,葉節點的data域存放的是數據記錄的地址。下圖是MyISAM索引的原理圖:
圖1
這里設表一共有三列,假設我們以Col1為主鍵,則圖8是一個MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件僅僅保存數據記錄的地址。在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何區別,只是主索引要求key是唯一的,而輔助索引的key可以重復。如果我們在Col2上建立一個輔助索引,則此索引的結構如下圖所示:
圖2
同樣也是一顆B+Tree,data域保存數據記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應數據記錄。
MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區分。
總結
以 上就是我對Java開發如何更改MySQL數據庫datadir目錄之MySQL數據庫索引實現問題及其優化總結,分享給大家,覺得收獲的話可以點個關注收藏轉發一波喔,謝謝大佬們支持!
最后,每一位讀到這里的網友,感謝你們能耐心地看完。希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步!都能贏取白富美,走向架構師的人生巔峰!
想了解學習Java方面的技術內容以及Java技術視頻的內容可加群:722040762 驗證碼:頭條(06 必過)歡迎大家的加入喲!
總結
以上是生活随笔為你收集整理的java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java cmd停服务_java代码启动
- 下一篇: idea搭建maven项目关于数据库连接