Category: Performance Tuning

  • SQL Server 2005 Interview Questions

    Download SQL Server Interview Question

    • If I want to see what fields a table is made of, and what the sizes of the
    fields are, what option do I have to look for?
    Sp_Columns ‘TableName’

    • What is a query?
    A request for information from a database. There are three general methods for posing queries:
    # Choosing parameters from a menu: In this method, the database system presents a list of parameters from which you can choose. This is perhaps the easiest way to pose a query because the menus guide you, but it is also the least flexible.
    # Query by example (QBE): In this method, the system presents a blank record and lets you specify the fields and values that define the query.
    # Query language: Many database systems require you to make requests for information in the form of a stylized query that must be written in a special query language. This is the most complex method because it forces you to learn a specialized language, but it is also the most powerful.

    • What is the purpose of the model database?
    It works as Template Database for the Create Database Syntax

    • What is the purpose of the master database?
    Master database keeps the information about sql server configuration, databases users etc

    • What is the purpose of the tempdb database?
    Tempdb database keeps the information about the temporary objects (#TableName, #Procedure). Also the sorting, DBCC operations are performed in the TempDB

    • What is the purpose of the USE command?
    Use command is used for to select the database. For i.e Use Database Name

    • If you delete a table in the database, will the data in the table be deleted too?
    Yes

    • What is the Parse Query button used for? How does this help you?
    Parse query button is used to check the SQL Query Syntax

    • Tables are created in a ____________________ in SQL Server 2005.
    resouce database(System Tables)

    • What is usually the first word in a SQL query?
    SELECT

    • Does a SQL Server 2005 SELECT statement require a FROM?
    NO

    • Can a SELECT statement in SQL Server 2005 be used to make an assignment? Explain with examples.
    Yes. Select @MyDate = GetDate()

    • What is the ORDER BY used for?
    Order By clause is used for sorting records in Ascending or Descending order

    • Does ORDER BY actually change the order of the data in the tables or does it just
    change the output?

    Order By clause change only the output of the data

    • What is the default order of an ORDER BY clause?
    Ascending Order

    • What kind of comparison operators can be used in a WHERE clause?

    Operator Meaning
    = (Equals) Equal to
    > (Greater Than) Greater than
    < (Less Than) Less than
    >= (Greater Than or Equal To) Greater than or equal to
    <= (Less Than or Equal To) Less than or equal to
    <> (Not Equal To) Not equal to
    != (Not Equal To) Not equal to (not SQL-92 standard)
    !< (Not Less Than) Not less than (not SQL-92 standard)
    !> (Not Greater Than) Not greater than (not SQL-92 standard)

    • What are four major operators that can be used to combine conditions on a WHERE
    clause?

    OR, AND, IN and BETWEEN

    • What are the logical operators?

    Operator Meaning
    ALL TRUE if all of a set of comparisons are TRUE.
    AND TRUE if both Boolean expressions are TRUE.
    ANY TRUE if any one of a set of comparisons are TRUE.
    BETWEEN TRUE if the operand is within a range.
    EXISTS TRUE if a subquery contains any rows.
    IN TRUE if the operand is equal to one of a list of expressions.
    LIKE TRUE if the operand matches a pattern.
    NOT Reverses the value of any other Boolean operator.
    OR TRUE if either Boolean expression is TRUE.
    SOME TRUE if some of a set of comparisons are TRUE.

    •In a WHERE clause, do you need to enclose a text column in quotes? Do you need to enclose a numeric column in quotes?
    Enclose Text in Quotes (Yes)
    Enclose Number in Quotes (NO)

    • Is a null value equal to anything? Can a space in a column be considered a null value? Why or why not?
    No NULL value means nothing. We can’t consider space as NULL value.

    • Will COUNT(column) include columns with null values in its count?
    Yes, it will include the null column in count

    • What are column aliases? Why would you want to use column aliases? How can you embed blanks in column aliases?
    You can create aliases for column names to make it easier to work with column names, calculations, and summary values. For example, you can create a column alias to:
    * Create a column name, such as “Total Amount,” for an expression such as (quantity * unit_price) or for an aggregate function.
    * Create a shortened form of a column name, such as “d_id” for “discounts.stor_id.”
    After you have defined a column alias, you can use the alias in a Select query to specify query output

    • What are table aliases?
    Aliases can make it easier to work with table names. Using aliases is helpful when:
    * You want to make the statement in the SQL Pane shorter and easier to read.
    * You refer to the table name often in your query — such as in qualifying column names — and want to be sure you stay within a specific character-length limit for your query. (Some databases impose a maximum

    length for queries.)
    * You are working with multiple instances of the same table (such as in a self-join) and need a way to refer to one instance or the other.

    • What are table qualifiers? When should table qualifiers be used?
    [@table_qualifier =] qualifier
    Is the name of the table or view qualifier. qualifier is sysname, with a default of NULL. Various DBMS products support three-part naming for tables (qualifier.owner.name). In SQL Server, this column represents the database name. In some products, it represents the server name of the table’s database environment.

    • Are semicolons required at the end of SQL statements in SQL Server 2005?
    No it is not required

    • Do comments need to go in a special place in SQL Server 2005?

    No its not necessary

    • When would you use the ROWCOUNT function versus using the WHERE clause?

    Returns the number of rows affected by the last statement. If the number of rows is more than 2 billion, use ROWCOUNT_BIG.
    Transact-SQL statements can set the value in @@ROWCOUNT in the following ways:
    * Set @@ROWCOUNT to the number of rows affected or read. Rows may or may not be sent to the client.
    * Preserve @@ROWCOUNT from the previous statement execution.
    * Reset @@ROWCOUNT to 0 but do not return the value to the client.
    Statements that make a simple assignment always set the @@ROWCOUNT value to 1.

    • Is SQL case-sensitive? Is SQL Server 2005 case-sensitive?

    No both are not case-sensitive. Case sensitivity depends on the collation you choose.
    If you installed SQL Server with the default collation options, you might find that the following queries return the same results:

    CREATE TABLE mytable
    (
    mycolumn VARCHAR(10)
    )
    GO

    SET NOCOUNT ON

    INSERT mytable VALUES(‘Case’)
    GO

    SELECT mycolumn FROM mytable WHERE mycolumn=’Case’
    SELECT mycolumn FROM mytable WHERE mycolumn=’caSE’
    SELECT mycolumn FROM mytable WHERE mycolumn=’case’

    You can alter your query by forcing collation at the column level:

    SELECT myColumn FROM myTable
    WHERE myColumn COLLATE Latin1_General_CS_AS = ‘caSE’

    SELECT myColumn FROM myTable
    WHERE myColumn COLLATE Latin1_General_CS_AS = ‘case’

    SELECT myColumn FROM myTable
    WHERE myColumn COLLATE Latin1_General_CS_AS = ‘Case’

    — if myColumn has an index, you will likely benefit by adding
    — AND myColumn = ‘case’

    • What is a synonym? Why would you want to create a synonym?

    SYNONYM is a single-part name that can replace a two, three or four-part name in many SQL statements. Using SYNONYMS in RDBMS cuts down on typing.
    SYNONYMs can be created for the following objects:

    * Table
    * View
    * Assembly (CLR) Stored Procedure
    * Assembly (CLR) Table-valued Function
    * Assembly (CLR) Scalar Function
    * Assembly Aggregate (CLR) Aggregate Functions
    * Replication-filter-procedure
    * Extended Stored Procedure
    * SQL Scalar Function
    * SQL Table-valued Function
    * SQL Inline-table-valued Function
    * SQL Stored Procedure

    Syntax
    CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >

    < object > :: =
    {
    [ server_name.[ database_name ] . [ schema_name_2 ].| database_name . [ schema_name_2 ].| schema_name_2. ] object_name
    }

    • Can a synonym name of a table be used instead of a table name in a SELECT statement?
    Yes

    • Can a synonym of a table be used when you are trying to alter the definition of a table?
    Not Sure will try

    • Can you type more than one query in the query editor screen at the same time?
    Yes we can.

    • While you are inserting values into a table with the INSERT INTO .. VALUES option, does the order of the columns in the INSERT statement have to be the same as the order of the columns in the table?
    Not Necessary

    • While you are inserting values into a table with the INSERT INTO .. SELECT option, does the order of the columns in the INSERT statement have to be the same as the order of the columns in the table?
    Yes if you are not specifying the column names in the insert clause, you need to maintain the column order in SELECT statement

    • When would you use an INSERT INTO .. SELECT option versus an INSERT INTO .. VALUES option? Give an example of each.
    INSERT INTO .. SELECT is used insert data in to table from diffrent tables or condition based insert
    INSERT INTO .. VALUES you have to specify the insert values

    • What does the UPDATE command do?
    Update command will modify the existing record

    • Can you change the data type of a column in a table after the table has been created? If so,which command would you use?

    Yes we can. Alter Table Modify Column

    • Will SQL Server 2005 allow you to reduce the size of a column?
    Yes it allows

    • What integer data types are available in SQL Server 2005?

    Exact-number data types that use integer data.

    Data type Range Storage
    bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) 8 Bytes
    int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647) 4 Bytes
    smallint -2^15 (-32,768) to 2^15-1 (32,767) 2 Bytes
    tinyint 0 to 255 1 Byte


    • What is the default value of an integer data type in SQL Server 2005?

    NULL

    • What is the difference between a CHAR and a VARCHAR datatype?

    CHAR and VARCHAR data types are both non-Unicode character data types with a maximum length of 8,000 characters. The main difference between these 2 data types is that a CHAR data type is fixed-length while a VARCHAR is variable-length. If the number of characters entered in a CHAR data type column is less than the declared column length, spaces are appended to it to fill up the whole length.

    Another difference is in the storage size wherein the storage size for CHAR is n bytes while for VARCHAR is the actual length in bytes of the data entered (and not n bytes).

    You should use CHAR data type when the data values in a column are expected to be consistently close to the same size. On the other hand, you should use VARCHAR when the data values in a column are expected to vary considerably in size.

    • Does Server SQL treat CHAR as a variable-length or fixed-length column?
    SQL Server treats CHAR as fixed length column

    • If you are going to have too many nulls in a column, what would be the best data type to use?
    Variable length columns only use a very small amount of space to store a NULL so VARCHAR datatype is the good option for null values

    • When columns are added to existing tables, what do they initially contain?

    The column initially contains the NULL values

    • What command would you use to add a column to a table in SQL Server?

    ALTER TABLE tablename ADD column_name DATATYPE

    • Does an index slow down updates on indexed columns?
    Yes

    • What is a constraint?

    Constraints in Microsoft SQL Server 2000/2005 allow us to define the ways in which we can automatically enforce the integrity of a database. Constraints define rules regarding permissible values allowed in columns and are the standard mechanism for enforcing integrity. Using constraints is preferred to using triggers, stored procedures, rules, and defaults, as a method of implementing data integrity rules. The query optimizer also uses constraint definitions to build high-performance query execution plans.

    • How many indexes does SQL Server 2005 allow you to have on a table?
    250 indices per table

    • What command would you use to create an index?
    CREAT INDEX INDEXNAME ON TABLE(COLUMN NAME)

    • What is the default ordering that will be created by an index (ascending or descending)?
    Clustered indexes can be created in SQL Server databases. In such cases the logical order of the index key values will be the same as the physical order of rows in the table.
    By default it is ascending order, we can also specify the index order while index creation.
    CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
    ON { table | view } ( column [ ASC | DESC ] [ ,…n ] )

    • How do you delete an index?
    DROP INDEX authors.au_id_ind

    • What does the NOT NULL constraint do?
    Constrain will not allow NULL values in the column

    • What command must you use to include the NOT NULL constraint after a table has already been created?
    DEFAULT, WITH CHECK or WITH NOCHECK

    • When a PRIMARY KEY constraint is included in a table, what other constraints does this imply?
    Unique + NOT NULL

    • What is a concatenated primary key?

    Each table has one and only one primary key, which can consist of one or many columns. A concatenated primary key comprises two or more columns. In a single table, you might find several columns, or groups of columns, that might serve as a primary key and are called candidate keys. A table can have more than one candidate key, but only one candidate key can become the primary key for that table

    • How are the UNIQUE and PRIMARY KEY constraints different?
    A UNIQUE constraint is similar to PRIMARY key, but you can have more than one UNIQUE constraint per table.

    When you declare a UNIQUE constraint, SQL Server creates a UNIQUE index to speed up the process of searching for duplicates. In this case the index defaults to NONCLUSTERED index, because you can have only one CLUSTERED index per table.

    * The number of UNIQUE constraints per table is limited by the number of indexes on the table i.e 249 NONCLUSTERED index and one possible CLUSTERED index.

    Contrary to PRIMARY key UNIQUE constraints can accept NULL but just once. If the constraint is defined in a combination of fields, then every field can accept NULL and can have some values on them, as long as the combination values is unique.

    • What is a referential integrity constraint? What two keys does the referential integrity constraint usually include?

    Referential integrity in a relational database is consistency between coupled tables. Referential integrity is usually enforced by the combination of a primary key or candidate key (alternate key) and a foreign key. For referential integrity to hold, any field in a table that is declared a foreign key can contain only values from a parent table’s primary key or a candidate key. For instance, deleting a record that contains a value referred to by a foreign key in another table would break referential integrity. The relational database management system (RDBMS) enforces referential integrity, normally either by deleting the foreign key rows as well to maintain integrity, or by returning an error and not performing the delete. Which method is used would be determined by the referential integrity constraint, as defined in the data dictionary.

    • What is a foreign key?

    FOREIGN KEY constraints identify the relationships between tables.
    A foreign key in one table points to a candidate key in another table. Foreign keys prevent actions that would leave rows with foreign key values when there are no candidate keys with that value. In the following sample, the order_part table establishes a foreign key referencing the part_sample table defined earlier. Usually, order_part would also have a foreign key against an order table, but this is a simple example.

    CREATE TABLE order_part
    (order_nmbr int,
    part_nmbr int
    FOREIGN KEY REFERENCES part_sample(part_nmbr)
    ON DELETE NO ACTION,
    qty_ordered int)
    GO

    You cannot insert a row with a foreign key value (except NULL) if there is no candidate key with that value. The ON DELETE clause controls what actions are taken if you attempt to delete a row to which existing foreign keys point. The ON DELETE clause has two options:

    NO ACTION specifies that the deletion fails with an error.

    CASCADE specifies that all the rows with foreign keys pointing to the deleted row are also deleted.
    The ON UPDATE clause defines the actions that are taken if you attempt to update a candidate key value to which existing foreign keys point. It also supports the NO ACTION and CASCADE options.


    • What does the ON DELETE CASCADE option do?

    ON DELETE CASCADE
    Specifies that if an attempt is made to delete a row with a key referenced by foreign keys in existing rows in other tables, all rows containing those foreign keys are also deleted. If cascading referential actions have also been defined on the target tables, the specified cascading actions are also taken for the rows deleted from those tables.

    ON UPDATE CASCADE
    Specifies that if an attempt is made to update a key value in a row, where the key value is referenced by foreign keys in existing rows in other tables, all of the foreign key values are also updated to the new value specified for the key. If cascading referential actions have also been defined on the target tables, the specified cascading actions are also taken for the key values updated in those tables.


    • What does the ON UPDATE NO ACTION do?

    ON DELETE NO ACTION
    Specifies that if an attempt is made to delete a row with a key referenced by foreign keys in existing rows in other tables, an error is raised and the DELETE is rolled back.

    ON UPDATE NO ACTION
    Specifies that if an attempt is made to update a key value in a row whose key is referenced by foreign keys in existing rows in other tables, an error is raised and the UPDATE is rolled back.

    • Can you use the ON DELETE and ON UPDATE in the same constraint?
    Yes we can.
    CREATE TABLE part_sample
    (part_nmbr int PRIMARY KEY,
    part_name char(30),
    part_weight decimal(6,2),
    part_color char(15) )

    CREATE TABLE order_part
    (order_nmbr int,
    part_nmbr int
    FOREIGN KEY REFERENCES part_sample(part_nmbr)
    ON DELETE NO ACTION ON UPDATE NO ACTION,
    qty_ordered int)
    GO

    Download SQL Server Interview Question

  • Database Mirroring Operating Modes

    Database Mirroring Operating Modes

    Database Mirroring is configured for three different operating modes. These modes are high availability, high performance and high protection. Each offers a different set of functionality and must be understood in order to select the appropriate configurations.

    • High Availability Operating Mode
      • The High Availability Operating Mode provides durable, synchronous transfer of data between the principal and mirror instances including automatic failure detection and failover. With this functionality comes a performance hit. This is because a transaction is not considered committed until SQL Server has successfully committed it to the transaction log on both the principal and the mirror database. As the distance between the principal and the mirror increases, the performance impact also increases.
      • In addition, there is an continuous ping process between all three nodes (if a witness is used) to detect failover. If witness server is not visible from the mirror, you must either reconfigure the operating mode for the database mirroring session or turn off the witness. Alternatively, you can manually fail over a database mirroring session at the mirror in High Availability Mode by issuing the ALTER DATABASE SET PARTNER FAILOVER command at the principal. The same command can also be issued if you have to take principal down for maintenance.
    • High Performance Operating Mode
      • With the High Performance Operating Mode the overall architecture acts as a warm standby and does not support automatic failure detection or failover. The data transfer between the principal and mirror instances is asynchronous. As such, this mode provides better performance and permits geographic separate between the principal and mirror SQL Server instances. Unfortunately, this mode increases latency and can lead to greater data loss in the event of primary database failure if it is not managed properly.
    • High Protection Operating Mode
      • The High Protection Operating Mode operates very similar to the High Availability Mode except the failover and promotion (mirror to principal) process is manual. With this mode the data transfer is synchronous. This mode is typically not recommended except in the event of replacing the existing witness SQL Server. After replacing or recovering the witness SQL Server, the operating mode should be changed back to High Availability Operating Mode
  • FAQs in SQL Server and Oracle

    1. What is database?

    A database is a logically coherent collection of data with some inherent meaning, representing some aspect of real world and which is designed, built and populated with data for a specific purpose.

    2. What is DBMS?
    It is a collection of programs that enables user to create and maintain a database. In other words it is general-purpose software that provides the users with the processes of defining, constructing and manipulating the database for various applications.

    3. What is a Database system?
    The database and DBMS software together is called as Database system.

    4. Advantages of DBMS?
    Ø Redundancy is controlled.
    Ø Unauthorised access is restricted.
    Ø Providing multiple user interfaces.
    Ø Enforcing integrity constraints.
    Ø Providing backup and recovery.

    5. Disadvantage in File Processing System?
    Ø Data redundancy & inconsistency.
    Ø Difficult in accessing data.
    Ø Data isolation.
    Ø Data integrity.
    Ø Concurrent access is not possible.
    Ø Security Problems.

    6. Describe the three levels of data abstraction?
    The are three levels of abstraction:
    Ø Physical level: The lowest level of abstraction describes how data are stored.
    Ø Logical level: The next higher level of abstraction, describes what data are stored in database and what relationship among those data.
    Ø View level: The highest level of abstraction describes only part of entire database.

    7. Define the “integrity rules”
    There are two Integrity rules.
    Ø Entity Integrity: States that “Primary key cannot have NULL value”
    Ø Referential Integrity: States that “Foreign Key can be either a NULL value or should be Primary Key value of other relation.

    8. What is extension and intension?
    Extension –
    It is the number of tuples present in a table at any instance. This is time dependent.
    Intension –
    It is a constant value that gives the name, structure of table and the constraints laid on it.

    9. What is System R? What are its two major subsystems?
    System R was designed and developed over a period of 1974-79 at IBM San Jose Research Center. It is a prototype and its purpose was to demonstrate that it is possible to build a Relational System that can be used in a real life environment to solve real life problems, with performance at least comparable to that of existing system.
    Its two subsystems are
    Ø Research Storage
    Ø System Relational Data System.

    10. How is the data structure of System R different from the relational structure?
    Unlike Relational systems in System R
    Ø Domains are not supported
    Ø Enforcement of candidate key uniqueness is optional
    Ø Enforcement of entity integrity is optional
    Ø Referential integrity is not enforced

    11. What is Data Independence?
    Data independence means that “the application is independent of the storage structure and access strategy of data”. In other words, The ability to modify the schema definition in one level should not affect the schema definition in the next higher level.
    Two types of Data Independence:
    Ø Physical Data Independence: Modification in physical level should not affect the logical level.
    Ø Logical Data Independence: Modification in logical level should affect the view level.
    NOTE: Logical Data Independence is more difficult to achieve

    12. What is a view? How it is related to data independence?
    A view may be thought of as a virtual table, that is, a table that does not really exist in its own right but is instead derived from one or more underlying base table. In other words, there is no stored file that direct represents the view instead a definition of view is stored in data dictionary.
    Growth and restructuring of base tables is not reflected in views. Thus the view can insulate users from the effects of restructuring and growth in the database. Hence accounts for logical data independence.

    13. What is Data Model?
    A collection of conceptual tools for describing data, data relationships data semantics and constraints.

    14. What is E-R model?
    This data model is based on real world that consists of basic objects called entities and of relationship among these objects. Entities are described in a database by a set of attributes.

    15. What is Object Oriented model?
    This model is based on collection of objects. An object contains values stored in instance variables with in the object. An object also contains bodies of code that operate on the object. These bodies of code are called methods. Objects that contain same types of values and the same methods are grouped together into classes.

    16. What is an Entity?
    It is a ‘thing’ in the real world with an independent existence.

    17. What is an Entity type?
    It is a collection (set) of entities that have same attributes.

    18. What is an Entity set?
    It is a collection of all entities of particular entity type in the database.

    19. What is an Extension of entity type?
    The collections of entities of a particular entity type are grouped together into an entity set.

    20. What is Weak Entity set?
    An entity set may not have sufficient attributes to form a primary key, and its primary key compromises of its partial key and primary key of its parent entity, then it is said to be Weak Entity set.

    21. What is an attribute?
    It is a particular property, which describes the entity.

    22. What is a Relation Schema and a Relation?
    A relation Schema denoted by R(A1, A2, …, An) is made up of the relation name R and the list of attributes Ai that it contains. A relation is defined as a set of tuples. Let r be the relation which contains set tuples (t1, t2, t3, …, tn). Each tuple is an ordered list of n-values t=(v1,v2, …, vn).

    23. What is degree of a Relation?
    It is the number of attribute of its relation schema.

    24. What is Relationship?
    It is an association among two or more entities.

    25. What is Relationship set?
    The collection (or set) of similar relationships.

    26. What is Relationship type?
    Relationship type defines a set of associations or a relationship set among a given set of entity types.

    27. What is degree of Relationship type?
    It is the number of entity type participating.

    25. What is DDL (Data Definition Language)?
    A data base schema is specifies by a set of definitions expressed by a special language called DDL.

    26. What is VDL (View Definition Language)?
    It specifies user views and their mappings to the conceptual schema.

    27. What is SDL (Storage Definition Language)?
    This language is to specify the internal schema. This language may specify the mapping between two schemas.

    28. What is Data Storage – Definition Language?
    The storage structures and access methods used by database system are specified by a set of definition in a special type of DDL called data storage-definition language.

    29. What is DML (Data Manipulation Language)?
    This language that enable user to access or manipulate data as organised by appropriate data model.
    Ø Procedural DML or Low level: DML requires a user to specify what data are needed and how to get those data.
    Ø Non-Procedural DML or High level: DML requires a user to specify what data are needed without specifying how to get those data.

    31. What is DML Compiler?
    It translates DML statements in a query language into low-level instruction that the query evaluation engine can understand.

    32. What is Query evaluation engine?
    It executes low-level instruction generated by compiler.

    33. What is DDL Interpreter?
    It interprets DDL statements and record them in tables containing metadata.

    34. What is Record-at-a-time?
    The Low level or Procedural DML can specify and retrieve each record from a set of records. This retrieve of a record is said to be Record-at-a-time.

    35. What is Set-at-a-time or Set-oriented?
    The High level or Non-procedural DML can specify and retrieve many records in a single DML statement. This retrieve of a record is said to be Set-at-a-time or Set-oriented.

    36. What is Relational Algebra?
    It is procedural query language. It consists of a set of operations that take one or two relations as input and produce a new relation.

    37. What is Relational Calculus?
    It is an applied predicate calculus specifically tailored for relational databases proposed by E.F. Codd. E.g. of languages based on it are DSL ALPHA, QUEL.

    38. How does Tuple-oriented relational calculus differ from domain-oriented relational calculus
    The tuple-oriented calculus uses a tuple variables i.e., variable whose only permitted values are tuples of that relation. E.g. QUEL
    The domain-oriented calculus has domain variables i.e., variables that range over the underlying domains instead of over relation. E.g. ILL, DEDUCE.

    39. What is normalization?
    It is a process of analysing the given relation schemas based on their Functional Dependencies (FDs) and primary key to achieve the properties
    Ø Minimizing redundancy
    Ø Minimizing insertion, deletion and update anomalies.

    40. What is Functional Dependency?
    A Functional dependency is denoted by X Y between two sets of attributes X and Y that are subsets of R specifies a constraint on the possible tuple that can form a relation state r of R. The constraint is for any two tuples t1 and t2 in r if t1[X] = t2[X] then they have t1[Y] = t2[Y]. This means the value of X component of a tuple uniquely determines the value of component Y.

    41. When is a functional dependency F said to be minimal?
    Ø Every dependency in F has a single attribute for its right hand side.
    Ø We cannot replace any dependency X A in F with a dependency Y A where Y is a proper subset of X and still have a set of dependency that is equivalent to F.
    Ø We cannot remove any dependency from F and still have set of dependency that is equivalent to F.

    42. What is Multivalued dependency?
    Multivalued dependency denoted by X Y specified on relation schema R, where X and Y are both subsets of R, specifies the following constraint on any relation r of R: if two tuples t1 and t2 exist in r such that t1[X] = t2[X] then t3 and t4 should also exist in r with the following properties
    Ø t3[x] = t4[X] = t1[X] = t2[X]
    Ø t3[Y] = t1[Y] and t4[Y] = t2[Y]
    Ø t3[Z] = t2[Z] and t4[Z] = t1[Z]
    where [Z = (R-(X U Y)) ]

    43. What is Lossless join property?
    It guarantees that the spurious tuple generation does not occur with respect to relation schemas after decomposition.

    44. What is 1 NF (Normal Form)?
    The domain of attribute must include only atomic (simple, indivisible) values.

    45. What is Fully Functional dependency?
    It is based on concept of full functional dependency. A functional dependency X Y is full functional dependency if removal of any attribute A from X means that the dependency does not hold any more.

    46. What is 2NF?
    A relation schema R is in 2NF if it is in 1NF and every non-prime attribute A in R is fully functionally dependent on primary key.

    47. What is 3NF?
    A relation schema R is in 3NF if it is in 2NF and for every FD X A either of the following is true
    Ø X is a Super-key of R.
    Ø A is a prime attribute of R.
    In other words, if every non prime attribute is non-transitively dependent on primary key.

    48. What is BCNF (Boyce-Codd Normal Form)?
    A relation schema R is in BCNF if it is in 3NF and satisfies an additional constraint that for every FD X A, X must be a candidate key.

    49. What is 4NF?
    A relation schema R is said to be in 4NF if for every Multivalued dependency X Y that holds over R, one of following is true
    Ø X is subset or equal to (or) XY = R.
    Ø X is a super key.

    50. What is 5NF?
    A Relation schema R is said to be 5NF if for every join dependency {R1, R2, …, Rn} that holds R, one the following is true
    Ø Ri = R for some i.
    Ø The join dependency is implied by the set of FD, over R in which the left side is key of R.

    51. What is Domain-Key Normal Form?
    A relation is said to be in DKNF if all constraints and dependencies that should hold on the the constraint can be enforced by simply enforcing the domain constraint and key constraint on the relation.

    52. What are partial, alternate,, artificial, compound and natural key?
    Partial Key:
    It is a set of attributes that can uniquely identify weak entities and that are related to same owner entity. It is sometime called as Discriminator.
    Alternate Key:
    All Candidate Keys excluding the Primary Key are known as Alternate Keys.
    Artificial Key:
    If no obvious key, either stand alone or compound is available, then the last resort is to simply create a key, by assigning a unique number to each record or occurrence. Then this is known as developing an artificial key.
    Compound Key:
    If no single data element uniquely identifies occurrences within a construct, then combining multiple elements to create a unique identifier for the construct is known as creating a compound key.
    Natural Key:
    When one of the data elements stored within a construct is utilized as the primary key, then it is called the natural key.

    53. What is indexing and what are the different kinds of indexing?
    Indexing is a technique for determining how quickly specific data can be found.
    Types:
    Ø Binary search style indexing
    Ø B-Tree indexing
    Ø Inverted list indexing
    Ø Memory resident table
    Ø Table indexing

    54. What is system catalog or catalog relation? How is better known as?
    A RDBMS maintains a description of all the data that it contains, information about every relation and index that it contains. This information is stored in a collection of relations maintained by the system called metadata. It is also called data dictionary.

    55. What is meant by query optimization?
    The phase that identifies an efficient execution plan for evaluating a query that has the least estimated cost is referred to as query optimization.

    56. What is join dependency and inclusion dependency?
    Join Dependency:
    A Join dependency is generalization of Multivalued dependency.A JD {R1, R2, …, Rn} is said to hold over a relation R if R1, R2, R3, …, Rn is a lossless-join decomposition of R . There is no set of sound and complete inference rules for JD.
    Inclusion Dependency:
    An Inclusion Dependency is a statement of the form that some columns of a relation are contained in other columns. A foreign key constraint is an example of inclusion dependency.

    57. What is durability in DBMS?
    Once the DBMS informs the user that a transaction has successfully completed, its effects should persist even if the system crashes before all its changes are reflected on disk. This property is called durability.

    58. What do you mean by atomicity and aggregation?
    Atomicity:
    Either all actions are carried out or none are. Users should not have to worry about the effect of incomplete transactions. DBMS ensures this by undoing the actions of incomplete transactions.
    Aggregation:
    A concept which is used to model a relationship between a collection of entities and relationships. It is used when we need to express a relationship among relationships.

    59. What is a Phantom Deadlock?
    In distributed deadlock detection, the delay in propagating local information might cause the deadlock detection algorithms to identify deadlocks that do not really exist. Such situations are called phantom deadlocks and they lead to unnecessary aborts.

    60. What is a checkpoint and When does it occur?
    A Checkpoint is like a snapshot of the DBMS state. By taking checkpoints, the DBMS can reduce the amount of work to be done during restart in the event of subsequent crashes.

    61. What are the different phases of transaction?
    Different phases are
    Ø Analysis phase
    Ø Redo Phase
    Ø Undo phase

    62. What do you mean by flat file database?
    It is a database in which there are no programs or user access languages. It has no cross-file capabilities but is user-friendly and provides user-interface management.

    63. What is “transparent DBMS”?
    It is one, which keeps its Physical Structure hidden from user.

    64. Brief theory of Network, Hierarchical schemas and their properties
    Network schema uses a graph data structure to organize records example for such a database management system is CTCG while a hierarchical schema uses a tree data structure example for such a system is IMS.

    65. What is a query?
    A query with respect to DBMS relates to user commands that are used to interact with a data base. The query language can be classified into data definition language and data manipulation language.

    66. What do you mean by Correlated subquery?
    Subqueries, or nested queries, are used to bring back a set of rows to be used by the parent query. Depending on how the subquery is written, it can be executed once for the parent query or it can be executed once for each row returned by the parent query. If the subquery is executed for each row of the parent, this is called a correlated subquery.
    A correlated subquery can be easily identified if it contains any references to the parent subquery columns in its WHERE clause. Columns from the subquery cannot be referenced anywhere else in the parent query. The following example demonstrates a non-correlated subquery.
    E.g. Select * From CUST Where ’10/03/1990′ IN (Select ODATE From ORDER Where CUST.CNUM = ORDER.CNUM)

    67. What are the primitive operations common to all record management systems?
    Addition, deletion and modification.

    68. Name the buffer in which all the commands that are typed in are stored
    ‘Edit’ Buffer

    69. What are the unary operations in Relational Algebra?
    PROJECTION and SELECTION.

    70. Are the resulting relations of PRODUCT and JOIN operation the same?
    No.
    PRODUCT: Concatenation of every row in one relation with every row in another.
    JOIN: Concatenation of rows from one relation and related rows from another.

    71. What is RDBMS KERNEL?
    Two important pieces of RDBMS architecture are the kernel, which is the software, and the data dictionary, which consists of the system-level data structures used by the kernel to manage the database
    You might think of an RDBMS as an operating system (or set of subsystems), designed specifically for controlling data access; its primary functions are storing, retrieving, and securing data. An RDBMS maintains its own list of authorized users and their associated privileges; manages memory caches and paging; controls locking for concurrent resource usage; dispatches and schedules user requests; and manages space usage within its table-space structures
    .
    72. Name the sub-systems of a RDBMS
    I/O, Security, Language Processing, Process Control, Storage Management, Logging and Recovery, Distribution Control, Transaction Control, Memory Management, Lock Management

    73. Which part of the RDBMS takes care of the data dictionary? How
    Data dictionary is a set of tables and database objects that is stored in a special area of the database and maintained exclusively by the kernel.

    74. What is the job of the information stored in data-dictionary?
    The information in the data dictionary validates the existence of the objects, provides access to them, and maps the actual physical storage location.

    75. Not only RDBMS takes care of locating data it also
    determines an optimal access path to store or retrieve the data

    76. How do you communicate with an RDBMS?
    You communicate with an RDBMS using Structured Query Language (SQL)

    77. Define SQL and state the differences between SQL and other conventional programming Languages
    SQL is a nonprocedural language that is designed specifically for data access operations on normalized relational database structures. The primary difference between SQL and other conventional programming languages is that SQL statements specify what data operations should be performed rather than how to perform them.

    78. Name the three major set of files on disk that compose a database in Oracle
    There are three major sets of files on disk that compose a database. All the files are binary. These are
    Ø Database files
    Ø Control files
    Ø Redo logs
    The most important of these are the database files where the actual data resides. The control files and the redo logs support the functioning of the architecture itself.
    All three sets of files must be present, open, and available to Oracle for any data on the database to be useable. Without these files, you cannot access the database, and the database administrator might have to recover some or all of the database using a backup, if there is one.

    79. What is an Oracle Instance?
    The Oracle system processes, also known as Oracle background processes, provide functions for the user processes—functions that would otherwise be done by the user processes themselves
    Oracle database-wide system memory is known as the SGA, the system global area or shared global area. The data and control structures in the SGA are shareable, and all the Oracle background processes and user processes can use them.
    The combination of the SGA and the Oracle background processes is known as an Oracle instance

    80. What are the four Oracle system processes that must always be up and running for the database to be useable
    The four Oracle system processes that must always be up and running for the database to be useable include DBWR (Database Writer), LGWR (Log Writer), SMON (System Monitor), and PMON (Process Monitor).

    81. What are database files, control files and log files. How many of these files should a database have at least? Why?
    Database Files

    The database files hold the actual data and are typically the largest in size. Depending on their sizes, the tables (and other objects) for all the user accounts can go in one database file—but that’s not an ideal situation because it does not make the database structure very flexible for controlling access to storage for different users, putting the database on different disk drives, or backing up and restoring just part of the database.
    You must have at least one database file but usually, more than one files are used. In terms of accessing and using the data in the tables and other objects, the number (or location) of the files is immaterial.
    The database files are fixed in size and never grow bigger than the size at which they were created
    Control Files
    The control files and redo logs support the rest of the architecture. Any database must have at least one control file, although you typically have more than one to guard against loss. The control file records the name of the database, the date and time it was created, the location of the database and redo logs, and the synchronization information to ensure that all three sets of files are always in step. Every time you add a new database or redo log file to the database, the information is recorded in the control files.
    Redo Logs
    Any database must have at least two redo logs. These are the journals for the database; the redo logs record all changes to the user objects or system objects. If any type of failure occurs, the changes recorded in the redo logs can be used to bring the database to a consistent state without losing any committed transactions. In the case of non-data loss failure, Oracle can apply the information in the redo logs automatically without intervention from the DBA.
    The redo log files are fixed in size and never grow dynamically from the size at which they were created.

    82. What is ROWID?
    The ROWID is a unique database-wide physical address for every row on every table. Once assigned (when the row is first inserted into the database), it never changes until the row is deleted or the table is dropped.
    The ROWID consists of the following three components, the combination of which uniquely identifies the physical storage location of the row.
    Ø Oracle database file number, which contains the block with the rows
    Ø Oracle block address, which contains the row
    Ø The row within the block (because each block can hold many rows)
    The ROWID is used internally in indexes as a quick means of retrieving rows with a particular key value. Application developers also use it in SQL statements as a quick way to access a row once they know the ROWID

    83. What is Oracle Block? Can two Oracle Blocks have the same address?
    Oracle “formats” the database files into a number of Oracle blocks when they are first created—making it easier for the RDBMS software to manage the files and easier to read data into the memory areas.
    The block size should be a multiple of the operating system block size. Regardless of the block size, the entire block is not available for holding data; Oracle takes up some space to manage the contents of the block. This block header has a minimum size, but it can grow.
    These Oracle blocks are the smallest unit of storage. Increasing the Oracle block size can improve performance, but it should be done only when the database is first created.
    Each Oracle block is numbered sequentially for each database file starting at 1. Two blocks can have the same block address if they are in different database files.

    84. What is database Trigger?
    A database trigger is a PL/SQL block that can defined to automatically execute for insert, update, and delete statements against a table. The trigger can e defined to execute once for the entire statement or once for every row that is inserted, updated, or deleted. For any one table, there are twelve events for which you can define database triggers. A database trigger can call database procedures that are also written in PL/SQL.

    85. Name two utilities that Oracle provides, which are use for backup and recovery.
    Along with the RDBMS software, Oracle provides two utilities that you can use to back up and restore the database. These utilities are Export and Import.
    The Export utility dumps the definitions and data for the specified part of the database to an operating system binary file. The Import utility reads the file produced by an export, recreates the definitions of objects, and inserts the data
    If Export and Import are used as a means of backing up and recovering the database, all the changes made to the database cannot be recovered since the export was performed. The best you can do is recover the database to the time when the export was last performed.

    86. What are stored-procedures? And what are the advantages of using them.
    Stored procedures are database objects that perform a user defined operation. A stored procedure can have a set of compound SQL statements. A stored procedure executes the SQL commands and returns the result to the client. Stored procedures are used to reduce network traffic.

    87. How are exceptions handled in PL/SQL? Give some of the internal exceptions’ name
    PL/SQL exception handling is a mechanism for dealing with run-time errors encountered during procedure execution. Use of this mechanism enables execution to continue if the error is not severe enough to cause procedure termination.
    The exception handler must be defined within a subprogram specification. Errors cause the program to raise an exception with a transfer of control to the exception-handler block. After the exception handler executes, control returns to the block in which the handler was defined. If there are no more executable statements in the block, control returns to the caller.
    User-Defined Exceptions
    PL/SQL enables the user to define exception handlers in the declarations area of subprogram specifications. User accomplishes this by naming an exception as in the following example:
    ot_failure EXCEPTION;
    In this case, the exception name is ot_failure. Code associated with this handler is written in the EXCEPTION specification area as follows:
    EXCEPTION
    when OT_FAILURE then
    out_status_code := g_out_status_code;
    out_msg := g_out_msg;
    The following is an example of a subprogram exception:
    EXCEPTION
    when NO_DATA_FOUND then
    g_out_status_code := ‘FAIL’;
    RAISE ot_failure;
    Within this exception is the RAISE statement that transfers control back to the ot_failure exception handler. This technique of raising the exception is used to invoke all user-defined exceptions.
    System-Defined Exceptions
    Exceptions internal to PL/SQL are raised automatically upon error. NO_DATA_FOUND is a system-defined exception. Table below gives a complete list of internal exceptions.

    PL/SQL internal exceptions.
    PL/SQL internal exceptions.

    Exception Name Oracle Error
    CURSOR_ALREADY_OPEN ORA-06511
    DUP_VAL_ON_INDEX ORA-00001
    INVALID_CURSOR ORA-01001
    INVALID_NUMBER ORA-01722
    LOGIN_DENIED ORA-01017
    NO_DATA_FOUND ORA-01403
    NOT_LOGGED_ON ORA-01012
    PROGRAM_ERROR ORA-06501
    STORAGE_ERROR ORA-06500
    TIMEOUT_ON_RESOURCE ORA-00051
    TOO_MANY_ROWS ORA-01422
    TRANSACTION_BACKED_OUT ORA-00061
    VALUE_ERROR ORA-06502
    ZERO_DIVIDE ORA-01476

    In addition to this list of exceptions, there is a catch-all exception named OTHERS that traps all errors for which specific error handling has not been established.

    88. Does PL/SQL support “overloading”? Explain
    The concept of overloading in PL/SQL relates to the idea that you can define procedures and functions with the same name. PL/SQL does not look only at the referenced name, however, to resolve a procedure or function call. The count and data types of formal parameters are also considered.
    PL/SQL also attempts to resolve any procedure or function calls in locally defined packages before looking at globally defined packages or internal functions. To further ensure calling the proper procedure, you can use the dot notation. Prefacing a procedure or function name with the package name fully qualifies any procedure or function reference.

    89. Tables derived from the ERD
    a) Are totally unnormalised
    b) Are always in 1NF
    c) Can be further denormalised
    d) May have multi-valued attributes

    (b) Are always in 1NF

    90. Spurious tuples may occur due to
    i. Bad normalization
    ii. Theta joins
    iii. Updating tables from join
    a) i & ii b) ii & iii
    c) i & iii d) ii & iii

    (a) i & iii because theta joins are joins made on keys that are not primary keys.

    91. A B C is a set of attributes. The functional dependency is as follows
    AB -> B
    AC -> C
    C -> B
    a) is in 1NF
    b) is in 2NF
    c) is in 3NF
    d) is in BCNF

    (a) is in 1NF since (AC)+ = { A, B, C} hence AC is the primary key. Since C B is a FD given, where neither C is a Key nor B is a prime attribute, this it is not in 3NF. Further B is not functionally dependent on key AC thus it is not in 2NF. Thus the given FDs is in 1NF.

    92. In mapping of ERD to DFD
    a) entities in ERD should correspond to an existing entity/store in DFD
    b) entity in DFD is converted to attributes of an entity in ERD
    c) relations in ERD has 1 to 1 correspondence to processes in DFD
    d) relationships in ERD has 1 to 1 correspondence to flows in DFD

    (a) entities in ERD should correspond to an existing entity/store in DFD

    93. A dominant entity is the entity
    a) on the N side in a 1 : N relationship
    b) on the 1 side in a 1 : N relationship
    c) on either side in a 1 : 1 relationship
    d) nothing to do with 1 : 1 or 1 : N relationship

    (b) on the 1 side in a 1 : N relationship

    94. Select ‘NORTH’, CUSTOMER From CUST_DTLS Where REGION = ‘N’ Order By
    CUSTOMER Union Select ‘EAST’, CUSTOMER From CUST_DTLS Where REGION = ‘E’ Order By CUSTOMER

    The above is
    a) Not an error
    b) Error – the string in single quotes ‘NORTH’ and ‘SOUTH’
    c) Error – the string should be in double quotes
    d) Error – ORDER BY clause
    (d) Error – the ORDER BY clause. Since ORDER BY clause cannot be used in UNIONS

    95. What is Storage Manager?
    It is a program module that provides the interface between the low-level data stored in database, application programs and queries submitted to the system.

    96. What is Buffer Manager?
    It is a program module, which is responsible for fetching data from disk storage into main memory and deciding what data to be cache in memory.

    97. What is Transaction Manager?
    It is a program module, which ensures that database, remains in a consistent state despite system failures and concurrent transaction execution proceeds without conflicting.

    98. What is File Manager?
    It is a program module, which manages the allocation of space on disk storage and data structure used to represent information stored on a disk.

    99. What is Authorization and Integrity manager?
    It is the program module, which tests for the satisfaction of integrity constraint and checks the authority of user to access data.

    100. What are stand-alone procedures?
    Procedures that are not part of a package are known as stand-alone because they independently defined. A good example of a stand-alone procedure is one written in a SQL*Forms application. These types of procedures are not available for reference from other Oracle tools. Another limitation of stand-alone procedures is that they are compiled at run time, which slows execution.

     

    101. What are cursors give different types of cursors.
    PL/SQL uses cursors for all database information accesses statements. The language supports the use two types of cursors
    Ø Implicit
    Ø Explicit

    102. What is cold backup and hot backup (in case of Oracle)?
    Ø Cold Backup:
    It is copying the three sets of files (database files, redo logs, and control file) when the instance is shut down. This is a straight file copy, usually from the disk directly to tape. You must shut down the instance to guarantee a consistent copy.
    If a cold backup is performed, the only option available in the event of data file loss is restoring all the files from the latest backup. All work performed on the database since the last backup is lost.
    Ø Hot Backup:
    Some sites (such as worldwide airline reservations systems) cannot shut down the database while making a backup copy of the files. The cold backup is not an available option.
    So different means of backing up database must be used — the hot backup. Issue a SQL command to indicate to Oracle, on a tablespace-by-tablespace basis, that the files of the tablespace are to backed up. The users can continue to make full use of the files, including making changes to the data. Once the user has indicated that he/she wants to back up the tablespace files, he/she can use the operating system to copy those files to the desired backup destination.
    The database must be running in ARCHIVELOG mode for the hot backup option.
    If a data loss failure does occur, the lost database files can be restored using the hot backup and the online and offline redo logs created since the backup was done. The database is restored to the most consistent state without any loss of committed transactions.

    103. What are Armstrong rules? How do we say that they are complete and/or sound
    The well-known inference rules for FDs
    Ø Reflexive rule :
    If Y is subset or equal to X then X Y.
    Ø Augmentation rule:
    If X Y then XZ YZ.
    Ø Transitive rule:
    If {X Y, Y Z} then X Z.
    Ø Decomposition rule :

    If X YZ then X Y.
    Ø Union or Additive rule:
    If {X Y, X Z} then X YZ.
    Ø Pseudo Transitive rule :
    If {X Y, WY Z} then WX Z.
    Of these the first three are known as Amstrong Rules. They are sound because it is enough if a set of FDs satisfy these three. They are called complete because using these three rules we can generate the rest all inference rules.

    104. How can you find the minimal key of relational schema?
    Minimal key is one which can identify each tuple of the given relation schema uniquely. For finding the minimal key it is required to find the closure that is the set of all attributes that are dependent on any given set of attributes under the given set of functional dependency.
    Algo. I Determining X+, closure for X, given set of FDs F
    1. Set X+ = X
    2. Set Old X+ = X+
    3. For each FD Y Z in F and if Y belongs to X+ then add Z to X+
    4. Repeat steps 2 and 3 until Old X+ = X+

    Algo.II Determining minimal K for relation schema R, given set of FDs F
    1. Set K to R that is make K a set of all attributes in R
    2. For each attribute A in K
    a. Compute (K – A)+ with respect to F
    b. If (K – A)+ = R then set K = (K – A)+

    105. What do you understand by dependency preservation?
    Given a relation R and a set of FDs F, dependency preservation states that the closure of the union of the projection of F on each decomposed relation Ri is equal to the closure of F. i.e.,
    ((PR1(F)) U … U (PRn(F)))+ = F+
    if decomposition is not dependency preserving, then some dependency is lost in the decomposition

    106. What is meant by Proactive, Retroactive and Simultaneous Update.
    Proactive Update:
    The updates that are applied to database before it becomes effective in real world .
    Retroactive Update:
    The updates that are applied to database after it becomes effective in real world .
    Simulatneous Update:
    The updates that are applied to database at the same time when it becomes effective in real world .

    107. What are the different types of JOIN operations?
    Equi Join: This is the most common type of join which involves only equality comparisions. The disadvantage in this type of join is that there

  • Setup Replication MySQL

    (for more database related articles)

    MySQL replication allows you to have an exact copy of a database from a master server on another server (slave), and all updates to the database on the master server are immediately replicated to the database on the slave server so that both databases are in sync. This is not a backup policy because an accidentally issued DELETE command will also be carried out on the slave; but replication can help protect against hardware failures though.

    Steps for setting up replication. The first step is to set up a user account to use only for replication. It’s best not to use an existing account for security reasons. To do this, enter an SQL statement like the following on the master server, logged in as root or a user that has GRANT OPTION privileges:

    GRANT REPLICATION SLAVE, REPLICATION CLIENT
        ON *.*
        TO 'replicant'@'slave_host'
        IDENTIFIED BY 'newpassowrd';

    In this SQL statement, the user account replicant is granted only what’s needed for replication. The user name can be almost anything. The host name (or IP address) is given in quotes. You have to enter this same statement on the slave server with the same user name and password, but with the master’s host name or IP address.

    GRANT REPLICATION SLAVE, REPLICATION CLIENT
        ON *.*
        TO 'replicant'@'master_host'
        IDENTIFIED BY 'newpassowrd';

    This way, if the master fails and will be down for a while, you could redirect users to the slave with DNS or by some other method. When the master is back up, you can then use replication to get it up to date by temporarily making it a slave to the former slave server.

    Configuring the Servers

    Once the replication user(replicant) is set up on both servers, we will need to add some lines to the MySQL configuration file on the master and on the slave server(my.cnf/my.ini). Depending on the type of operating system, the file will probably be called my.cnf or my.ini. On Unix-type systems, the configuration file is usually located in the /etc directory. On Windows systems, it’s usually located in c:\ or in c:\Windows. Using a text editor, add the following lines to the configuration file, under the [mysqld] group heading:

    server-id = 1
    log-bin = /var/log/mysql/bin.log

    The server identification number is an arbitrary number to identify the master server. Almost any whole number is fine. A different one should be assigned to the slave server to keep them straight. The second line above instructs MySQL to perform binary logging to the path and file given. The actual path and file name is mostly up to you. Just be sure that the directory exists and the user mysql is the owner, or at least has permission to write to the directory. Also, for the file name use the suffix of “.log” as shown here. It will be replaced automatically with an index number (e.g., “.000001”) as new log files are created when the server is restarted or the logs are flushed.

    For the slave server, we will need to add a few more lines to the configuration file. We’ll have to provide information on connecting to the master server, as well as more log file options. We would add lines similar to the following to the slave’s configuration file:

    server-id = 2
    
    master-host = masterservernameoripaddress master-port = 3306
    master-user = replicant
    master-password = newpassword
    
    log-bin = /var/log/mysql/bin.log
    log-bin-index = /var/log/mysql/log-bin.index
    log-error = /var/log/mysql/error.log
    
    relay-log = /var/log/mysql/relay.log
    relay-log-info-file = /var/log/mysql/relay-log.info
    relay-log-index = /var/log/mysql/relay-log.index

    This may seem like a lot, but it’s pretty straightforward once you pick it apart. The first line is the identification number for the slave server. If you set up more than one slave server, give them each a different number. If you’re only using replication for backing up your data, though, you probably won’t need more than one slave server. The next set of lines provides information on the master server: the host name as shown here, or the IP address of the master may be given. Next, the port to use is given. Port 3306 is the default port for MySQL, but another could be used for performance or security considerations. The next two lines provide the user name and password for logging into the master server.

    The last two stanzas above set up logging. The second to last stanza starts binary logging as we did on the master server, but this time on the slave. This is the log that can be used to allow the master and the slave to reverse roles, as mentioned earlier. The binary log index file (log-bin.index) is for recording the name of the current binary log file to use. As the server is restarted or the logs are flushed, the current log file changes and its name is recorded here. The log-error option establishes an error log. If you don’t already have this set up, you should, since it’s where any problems with replication will be recorded. The last stanza establishes the relay log and related files mentioned earlier. The relay log makes a copy of each entry in the master server’s binary log for performance’s sake, the relay-log-info-file option names the file where the slave’s position in the master’s binary log will be noted, and the relay log index file is for keeping track of the name of the current relay log file to use for replicating.

    For the failover in Linux we can use the High Availability Services. We will talk about it later.

  • MySQL Optimization Tips

    (for more database related articles)

    MYSQL Optimization Tips
    The MySQL database server performance depends on the number of factors. The Optimized Query is one of the factors for the MySQL robust performance.

    The MySQL performance depends on the below factors.

    1. Hardware (RAM, DISK, CPU etc)
    2. Operating System (i.e. Linux OS will give the more performance compare to Windows OS )
    3. Application
    4. Optimization of MySQL Server & Queries

    · Choose compiler and compiler options.

    · Find the best MySQL startup options for your system (my.ini/my.cnf).

    · Use EXPLAIN SELECT, SHOW VARIABLES, SHOW GLOBAL STATUS, SHOW GLOBAL STATUS and SHOW PROCESSLIST.

    · Optimize your table formats.

    · Maintain your tables (myisamchk, CHECK TABLE, OPTIMIZE TABLE).

    · Use MySQL extensions to get things done faster.

    · Write a MySQL UDF function if you notice that you would need some function in many places.

    · Don’t use GRANT on table level or column level if you don’t really need it

    · Use Index columns in joins

    · Use better data types for the table design. (i.e. “INT” data type is better than “BIG INT” data type)

    · Increase the use of “NOT NULL” at table level, that will save some bits

    · Do not use UTF8 where you do not need it. UTF8 has 3 times more space reserved. Also UTF8 comparison and sorting is much more expensive. Only use UTF8 for mixed charset data

    · Use staraight_join instead of inner join

    · Use joins instead of “IN” or “Sub-Queries”

    · Decide the database engine for the table by most effective way. (INNODB, MEMORY, ARCHIVE etc)

    · INNODB database engine needs more performance and tuning for the MySQL Server & Query optimization.

    · Try to create Unique Index. Avoid duplicate data in the index columns.

    · Beware of Large Limit

    • LIMIT 1000000, 10 can be slow. Even Google does not let you to page 100000. If large number of groups use

    SQL_BIG_RESULT hint. Use FileSort instead of temporary table

    · USE Index hints (INDEX/FORCE INDEX/IGNORE INDEX) (i.e SELECT * FROM Country IGNORE INDEX(PRIMARY)). This will give the advice to MySQL for the Index Use.

    · Use “UNION ALL” instead of “UNION”

    · Do not normalize the schema up to more than 3rd Level NF

    · Avoid the use of cursors in the stored procedure if not required.

    · Avoid the use DDL statements in the stored procedure if not required.

    · Use SQL for the things it’s good at, and do other things in your application. Use the MySQL server to:

    · Find rows based on WHERE clause.

    · JOIN tables

    · GROUP BY

    · ORDER BY

    · DISTINCT

    Don’t use MySQL server:

    · To validate data (like date)

    · As a calculator

    · Use keys wisely.

    · Keys are good for searches, but bad for inserts / updates of key columns.

    · Keep by data in the 3rd normal database form, but don’t be afraid of duplicating information or creating summary tables if you need more speed.

    · Instead of doing a lot of GROUP BYs on a big table, create summary tables of the big table and query this instead.

    · UPDATE table set count=count+1 where key_column=constant is very fast!

    · For log tables, it’s probably better to generate summary tables from them once in a while than try to keep the summary tables live.

    · Take advantage of default values on INSERT.

    · Use Index columns in joins

    · Use the explain command
    Use multiple-row INSERT statements to store many rows with one SQL statement.

    The explain command can tell you which indexes are used with the specified query and many other pieces of useful information that can help you choose a better index or query.

    Example of usage: explain select * from table

    Explanation of row output:

    o table—The name of the table.

    o type—The join type, of which there are several.

    o possible_keys—This column indicates which indexes MySQL could use to find the rows in this table. If the result is NULL, no indexes would help with this query. You should then take a look at your table structure and see whether there are any indexes that you could create that would increase the performance of this query.

    o key—The key actually used in this query, or NULL if no index was used.

    o key_len—The length of the key used, if any.

    o ref—Any columns used with the key to retrieve a result.

    o rows—The number of rows MySQL must examine to execute the query.

    o extra—Additional information regarding how MySQL will execute the query. There are several options, such as Using index (an index was used) and Where (a WHERE clause was used).

    · Use less complex permissions

    The more complex your permissions setup, the more overhead you have. Using simpler permissions when you issue GRANT statements enables MySQL to reduce permission-checking overhead when clients execute statements.

    · Specific MySQL functions can be tested using the built-in “benchmark” command

    If your problem is with a specific MySQL expression or function, you can perform a timing test by invoking the BENCHMARK() function using the mysql client program. Its syntax is BENCHMARK(loop_count,expression). The return value is always zero, but mysql prints a line displaying approximately how long the statement took to execute

    · Optimize where clauses

    o Remove unnecessary parentheses

    o COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.

    o If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table

    · Run optimize table

    This command de-fragments a table after you have deleted/inserted lots of rows into table.

    · Avoid variable-length column types when necessary

    For MyISAM tables that change frequently, you should try to avoid all variable-length columns (VARCHAR, BLOB, and TEXT). The table uses dynamic row format if it includes even a single variable-length column.

    · Insert delayed

    Use insert delayed when you do not need to know when your data is written. This reduces the overall insertion impact because many rows can be written with a single disk write.

    · Use statement priorities

    o Use INSERT LOW_PRIORITY when you want to give SELECT statements higher priority than your inserts.

    o Use SELECT HIGH_PRIORITY to get retrievals that jump the queue. That is, the SELECT is executed even if there is another client waiting.

    · Use multiple-row inserts

    Use multiple-row INSERT statements to store many rows with one SQL statement.

    · Synchronize data-types

    Columns with identical information in different tables should be declared to have identical data types so that joins based on the corresponding columns will be faster.

    · Optimizing tables

    o MySQL has a rich set of different types. You should try to use the most efficient type for each column.

    o The ANALYSE procedure can help you find the optimal types for a table: SELECT * FROM table_name PROCEDURE ANALYSE()

    o Use NOT NULL for columns which will not store null values. This is particularly important for columns which you index.

    o Change your ISAM tables to MyISAM.

    o If possible, create your tables with a fixed table format.

    o Don’t create indexes you are not going to use.

    o Use the fact that MySQL can search on a prefix of an index; If you have and INDEX (a,b), you don’t need an index on (a).

    o Instead of creating an index on long CHAR/VARCHAR column, index just a prefix of the column to save space. CREATE TABLE table_name (hostname CHAR(255) not null, index(hostname(10)))

    o Use the most efficient table type for each table.

    o Columns with identical information in different tables should be declared identically and have identical names.

    When MySQL uses indexes

    o Using >, >=, =, <, <=, IF NULL and BETWEEN on a key.

    o SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;

    o SELECT * FROM table_name WHERE key_part1 IS NULL;

    o When you use a LIKE that doesn’t start with a wildcard.

    o SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'

    o Retrieving rows from other tables when performing joins.

    o SELECT * from t1,t2 where t1.col=t2.key_part

    o Find the MAX() or MIN() value for a specific index.

    o SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10

    o ORDER BY or GROUP BY on a prefix of a key.

    o SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3

    o When all columns used in the query are part of one key.

    o SELECT key_part3 FROM table_name WHERE key_part1=1