MySQL Training Summary

本文深入探讨了数据库中不同存储引擎的特点与配置方法,包括MyISAM、InnoDB等存储引擎的区别,以及如何通过配置参数优化数据库性能。此外,文章还介绍了数据库分区技术及其应用,帮助读者更好地管理和优化数据库。
[size=large][b]Store Engine[/b][/size]
In a database, different tables can use different store engines.
[list=1]
[*] MyISAM
Not Support: Transaction, Row level locking
Support: Full-text index
So MyISAM is good at big amount data query.
[*] InnoDB (Default store engine from MySQL 5.5)
Not Support: Full-text index
Support: Transaction, Row level locking
InnoDB is good at DML operations (Delete, insert, update). For most of cases, use InnoDB is better choice.
[/list]
[size=large][b]Configuration[/b][/size]
[list=1]
[*] show variables : Display static parameters
[*] show status : Display dynamic parameters
[/list]
[size=large][b]Storage[/b][/size]
[list=1]
[*] MySQL data default location is /usr/local/mysql/data. Use an other partition store data. To avoid the disk operation competition.
[*] *.myd is MyISAM data file. *.myi is MyISAM index file.
[*] Data, index and log files should not store in the root partition, since the performance reason.
[*] Store data files and index files separately. (InnoDB cannot do that)
[/list]
[size=large][b]Partitioning (Horizon)[/b][/size]
MySQL 5.5 has build-in partitioning function.
Range Partitioning:

CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT NOT NULL,
store_id INT NOT NULL
)
PARTITION BY RANGE (job_code) (
PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (10000)
);

HASH Partitioning:

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using Models; using System.Configuration; using System.Xml; namespace DAL { public class DBConfig { /// <summary> /// 禁止实例化 /// </summary> private DBConfig() { } public static List<Databases> GetDatabaseName(string connStr) { SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand("select name from sys.databases where name like '%Training%'", conn); List<Databases> list = new List<Databases>(); try { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { list.Add(new Databases() { DatabaseName=reader[0].ToString() }); } return list; } catch (Exception ex) { throw ex; } finally { conn.Close(); } } /// 获取ConnectionStrings public static string GetConnectionStringsConfig(string connectionName) { string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString; return connectionString; } /// /// 更新连接字符串 public static void UpdateConnectionStringsConfig(string key, string conString) { bool isModified = false; //记录该连接串是否已经存在 if (ConfigurationManager.ConnectionStrings[key] != null) { isModified = true; } //新建一个连接字符串实例 ConnectionStringSettings mySettings = new ConnectionStringSettings(key, conString); // 打开可执行的配置文件*.exe.config Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // 如果连接串已存在,首先删除它 if (isModified) { config.ConnectionStrings.ConnectionStrings.Remove(key); } // 将新的连接串添加到配置文件中. config.ConnectionStrings.ConnectionStrings.Add(mySettings); // 保存对配置文件所作的更改 config.Save(ConfigurationSaveMode.Modified); // 强制重新载入配置文件的ConnectionStrings配置节 ConfigurationManager.RefreshSection("connectionStrings"); } /// <summary> /// 修改AppSettings中配置 /// </summary> /// <param name="key">key值</param> /// <param name="value">相应值</param> public static bool SetConfigValue(string key, string value) { try { Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (config.AppSettings.Settings[key] != null) config.AppSettings.Settings[key].Value = value; else config.AppSettings.Settings.Add(key, value); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); return true; } catch { return false; } } /// <summary> /// 获取AppSettings中某一节点值 /// </summary> /// <param name="key"></param> public static string GetConfigValue(string key) { Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (config.AppSettings.Settings[key] != null) return config.AppSettings.Settings[key].Value; else return string.Empty; } /// <summary> /// 测试连接数据库是否成功 /// </summary> /// <returns></returns> public static bool ConnectionTest(string ConnectionString) { //创建连接对象 SqlConnection mySqlConnection = new SqlConnection(ConnectionString); bool IsConnectionInfo = true; //ConnectionTimeout 在.net 1.x 可以设置 在.net 2.0后是只读属性,则需要在连接字符串设置 //如:server=.;uid=sa;pwd=;database=PMIS;Integrated Security=SSPI; Connection Timeout=30 //mySqlConnection.ConnectionTimeout = 1;//设置连接超时的时间 try { //Open DataBase //打开数据库 mySqlConnection.Open(); IsConnectionInfo = true; } catch { //Can not Open DataBase //打开不成功 则连接不成功 IsConnectionInfo = false; } finally { //Close DataBase //关闭数据库连接 mySqlConnection.Close(); } //mySqlConnection is a SqlConnection object if (mySqlConnection.State == ConnectionState.Closed || mySqlConnection.State == ConnectionState.Broken) { //Connection is not available return IsConnectionInfo; } else { //Connection is available return IsConnectionInfo; } } } }
07-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值